为什么这会产生编译器错误:
class Foo
{
public Bar Baz = new Bar(this);
}
但这并不:
class Foo
{
public Bar Baz;
public Foo()
{
this.Baz = new Bar(this);
}
}
从概念上讲,两者是等价的,不是吗?
不,它们并不完全相同......变量初始值设定项执行before运行任何基类构造函数。构造函数的主体执行after运行基类构造函数。 (这与 Java 不同,在 Java 中,变量初始值设定项在基类构造函数之后、构造函数主体之前执行。)
因此访问更安全this
在构造函数体内:您可以确保对象至少在其基类(以及向上)方面进行了初始化。
I believe反正就是这个道理……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)