public class A
{
private string _a_string;
public string AString
{
get { return _a_string; }
set { _a_string = value; }
}
}
public class B
{
private string _b_string;
private A _a;
public A A
{
get { return _a; }
set { _a = value; }
}
public string BString
{
get { return _b_string; }
set { _b_string = value; }
}
}
这个不起作用:
B _b = new B { A = { AString = "aString" }, BString = "bString" };
System.NullReferenceException : 对象引用未设置为对象的实例。
这个有效:
B _b = new B { A = new A { AString = "aString" }, BString = "bString" };
在VS2010中,这两个都可以成功编译。
class B
内部初始化字段支持B.A
。这样,您就不必担心自己(或其他人)会陷入这个陷阱。 - Jon