加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:32:25 所属栏目:百科 来源:网络整理
导读:为什么会产生编译器错误: class Foo{ public Bar Baz = new Bar(this);} 但这不是: class Foo{ public Bar Baz; public Foo() { this.Baz = new Bar(this); }} 从概念上讲,这两者是等价的,不是吗? 解决方法 不,它们并不完全相同……变量初始化程序在运行
为什么会产生编译器错误:

class Foo
{
    public Bar Baz = new Bar(this);
}

但这不是:

class Foo
{
    public Bar Baz;

    public Foo()
    {
        this.Baz = new Bar(this);
    }
}

从概念上讲,这两者是等价的,不是吗?

解决方法

不,它们并不完全相同……变量初始化程序在运行任何基类构造函数之前执行.构造函数的主体在运行基类构造函数后执行. (这与Java不同,其中变量初始化程序在基类构造函数之后但在构造函数体之前执行.)

因此,在构造函数体内访问它更安全:您可以确保该对象至少在其基类(及其向上)方面被初始化.

无论如何,我相信这是推理……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读