A():这个(默认)如何工作
本文关键字:何工作 工作 这个 默认 | 更新日期: 2023-09-27 18:36:04
在一个库(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 实例将是默认的副本,但为此调用 A 的哪个 ctor (默认)?这让我感到困惑,因为 c# 没有复制构造函数,并且没有声明的 A 的显式构造函数接受它的实例。
我在网上搜索了,但我不知道这种现象是如何称呼的,所以没有奏效。此外,MS 关于 c# 的文档没有提到这是可能的,至少据我所知。
有谁知道这件事的细节?
平台:VS 2010 SP1, .NET 4.5
它是如何工作的?它不会,您发布的代码无法编译。你是对的,C# 中没有复制构造函数,所以如果你想要一个,你需要编写它。像这样:
public A(A a) : this(a.number) {}
另一种可能性是从A
到int
的隐式转换。