在构造函数中调用基础构造函数和其他构造函数

Kai*_*Kai 18 .net c# inheritance constructor

标题可能听起来令人困惑.我想要的是在构造函数中调用同一个类的构造函数和基类的构造函数.也许我第一次尝试解决这个问题可以解释我的问题:

public MyClass(MyClass obj) : base(obj),this() {}
Run Code Online (Sandbox Code Playgroud)

但这种符号不起作用.有没有解决方案可以解决这个问题?

Arm*_*yan 16

不,你出于以下原因不能这样做:

当构造函数调用其基类的构造函数时,后一个调用是所讨论的构造函数的一部分.所以你不能调用同一个类的另一个构造函数和基类的构造函数,因为前一个调用已经包含对基础构造函数的调用 - 你不能初始化你的基数两次


Nic*_*ick 7

C#允许base(...)或this(...),因为每个构造函数最终都必须调用一个超级构造函数.因此,如果可以同时调用base()和this(),则会发生两个超级构造函数调用,这从根本上是不正确的.

这也是为什么不能两次调用base(...)的原因.