C# - 为什么无法在字段初始值设定项中访问“this”?

2024-04-19

为什么这会产生编译器错误:

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(使用前将#替换为@)

C# - 为什么无法在字段初始值设定项中访问“this”? 的相关文章

随机推荐