8

我从朋友那里得到一个应用程序来开发。然后在代码中我得到了这样令人困惑的代码:

public someNameHere()
{
   base..ctor();
} 

好吧,我从来没有这样的应用程序。我需要一个解释

基础..ctor();

我在谷歌上搜索,找不到让我满意的答案。感谢您给我的任何帮助。

4

2 回答 2

20

.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++ 等)中,您可以在构造函数中的任何位置调用基本构造函数 - 而不仅仅是在开始时。

于 2013-04-23T08:17:38.363 回答
3

应该是基类的默认无参数构造函数。Elaborating,.ctor()是编译 C# 时自动生成的构造函数的别名。所以Writingbase..ctor()就是引用.ctor()基类中的方法。

于 2013-04-23T08:14:54.947 回答