1

在图书馆(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

4

1 回答 1

3

它是如何工作的?它没有,您发布的代码将无法编译。你是对的,C# 中没有复制构造函数,所以如果你想要一个,你需要编写它。就像是:

public A(A a) : this(a.number) {}

另一种可能性是存在从Ato的隐式转换int

于 2013-10-20T16:17:36.870 回答