我从朋友那里得到了一个要开发的应用程序。但是在代码中,我遇到了如下令人困惑的代码:
public someNameHere()
{
base..ctor();
}
这是我从未遇到过的一种应用程序。我需要对此进行解释。
base..ctor();
我已经搜索了谷歌,但找不到满意的答案。感谢您提供的任何帮助。
我从朋友那里得到了一个要开发的应用程序。但是在代码中,我遇到了如下令人困惑的代码:
public someNameHere()
{
base..ctor();
}
这是我从未遇到过的一种应用程序。我需要对此进行解释。
base..ctor();
我已经搜索了谷歌,但找不到满意的答案。感谢您提供的任何帮助。
.ctor()
是构造函数使用的内部名称。在 C# 中不会以此方式使用,也不会编译。更通常情况下,base..ctor()
仅由编译器在执行以下操作时使用:
public class Foo : Bar {
public Foo(string s) : base(s) {...}
public Foo() {...} // has an implicit :base()
}
我唯一看到做得不同的时候是反编译(通过反编译器等)一些非C# IL代码,这些代码将构造代码按照与C#编译器不同的顺序进行,因此无法用“纯粹”的C#表达。在原始的IL中(以及来自C++等语言),可以在构造函数中的任何位置调用基类构造函数,而不仅仅是在开头。
应该是你的基类默认构造函数。更详细地说,.ctor()
是 C# 编译器自动生成的构造函数的别名。因此,编写 base..ctor()
是在引用基类中的 .ctor()
方法。
public MyCtor() : base()
一样被调用。 - J. Steen