在一个库(OpenTK)中,我看到了某个类的一个奇怪的构造函数。该类有一个静态类成员,其中包含该类的实例,其中包含所有字段的默认值。
看起来像这样(这不是实际的实现,只是要说清楚):
class A {
public int number;
public static A Default = new A(0);
public A(): this(Default) { }
public A(int number) {
this.number = number;
}
}
我想知道第一个ctor是如何工作的。好吧,结果A实例可能是Default的副本但是A的ctor被调用(默认)?它让我感到困惑,因为c#没有复制构造函数,并且没有声明接受其实例的A的显式构造函数。
我在网上搜索但是我不知道这种现象是如何被调用的,所以不起作用。此外,MS的c#文档没有提到这是可能的,据我所知,至少。
有谁知道这个细节?
平台: VS 2010 SP1 , .NET 4.5
答案 0 :(得分:3)
它是如何工作的?它没有,你发布的代码将无法编译。你是对的,C#中没有拷贝构造函数,所以如果你想要一个,你需要编写它。类似的东西:
public A(A a) : this(a.number) {}
另一种可能性是存在从A
到int
的隐式转换。