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

A():这个(默认)如何工作

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

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

另一种可能性是从Aint的隐式转换。