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 のコピーになりますが、これ (Default) に対して呼び出される A の ctor は何ですか? c# にはコピー コンストラクターがなく、そのインスタンスを受け入れると宣言された A の明示的なコンストラクターがないため、混乱します。

ネットで検索しましたが、この現象がどのように呼ばれているのか見当がつかないので、うまくいきませんでした。また、少なくとも私が見た限りでは、c# に関する MS のドキュメントでは、これが可能であるとは言及されていませんでした。

これの詳細わかる人いますか?

プラットフォーム: VS 2010 SP1.NET 4.5

4

1 に答える 1

3

それはどのように機能しますか?そうではありません。投稿したコードはコンパイルされません。C# にはコピー コンストラクターがないことは間違いないので、必要な場合は作成する必要があります。何かのようなもの:

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

もう 1 つの可能性は、 からAへの暗黙的な変換があったことintです。

于 2013-10-20T16:17:36.870 に答える