【发布时间】:2009-12-22 15:41:16
【问题描述】:
这是我的一段代码:
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 为空,这意味着构造函数代码没有被调用!这里有一些黑暗魔法在起作用,我非常感谢您的解释。
谢谢!
编辑 - 抱歉没有复制。我的实际代码(显然)比这更复杂,所以我试图将其简化,显然在此过程中我必须消除代码正常功能的其他障碍。但无论如何,Kobi's answer 确实是我试图从这个问题中解脱出来的——所以要感谢他。 :)
【问题讨论】:
-
此代码甚至无法编译,因为您没有 Value 属性的设置器。
-
哪个编译器?在 VS2008/.NET3.5 下只要我为 Value 属性添加一个设置器就可以正常工作。
-
不管怎样,stackoverflow.com/questions/1405709/… 没什么可补充的