繁体   English   中英

为什么不首先调用基类构造函数

[英]Why base class constructor isnt called first

当使用简单语法通过直接为它们赋值来初始化派生类字段时,编译器会发出一个IL代码,该代码首先初始化派生类字段,然后调用base .ctor。 为什么它不调用base .ctor字段并初始化派生类字段。 如果我有依赖基类字段的字段怎么办?

我想在这里提供一些代码示例,但我从手机上发布了这个问题。

我认为这是因为它需要处理在构造函数中调用虚方法或初始化器的情况。

Eric Lippert在他的博客上有两部分系列。

http://blogs.msdn.com/b/ericlippert/archive/2008/02/15/why-do-initializers-run-in-the-opposite-order-as-constructors-part-one.aspx

只是在这里提一下你的意志。 希望这可以帮助。

Calling methods on derived types from constructors is dirty pool, but it is not illegal. 

将没有完全构建的对象填充到全局状态是有风险的,但不是非法的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM