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不同,其中变量初始化程序在基类构造函数之后但在构造函数体之前执行.)
因此,在构造函数体内访问它更安全:您可以确保该对象至少在其基类(及其向上)方面被初始化. 无论如何,我相信这是推理…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |