Вот кусок моего кода:
public class MyClass {
public object Value { get; set; }
public MyClass(object value) {
this.Value = value;
}
}
public class AnotherClass {
private static MyClass _MyObj = new MyClass(new object());
public static void Main(string[] args) {
var x = _MyObj; // no problem
var y = x.Value; // no problem
var z = y.ToString(); // Null ref exception
}
}
Я не понимаю, как это может быть. _MyObj
не является нулевым, что означает, что встроенное присваивание работало, но _MyObj.Value
выходит нулевым, что означает, что код конструктора не был вызван! Здесь работает какая-то темная магия, и я был бы очень признателен за объяснение.
Спасибо!
РЕДАКТИРОВАТЬ - извините за отсутствие воспроизведения. Мой реальный код (очевидно) более сложен, чем этот, поэтому я попытался обдумать его, и, очевидно, в процессе я должен был удалить некоторые другие препятствия для правильной функции кода. Но Ответ Коби - это действительно то, что я пытался выбрать из этого вопроса, так или иначе - так что ответьте ему должное. :)