ジェネリッククラスのデフォルトコンストラクターの構文は何ですか?


87

ジェネリッククラスのデフォルトコンストラクターを実装することはC#で禁止されていますか?

そうでない場合、なぜ以下のコードがコンパイルされないのですか?(削除する<T>とコンパイルされますが)

では、ジェネリッククラスのデフォルトコンストラクターを定義する正しい方法は何ですか?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

コンパイル時エラー:エラー1クラス、構造体、またはインターフェイスメンバー宣言のトークン '('が無効です

回答:


145

コンストラクターでtypeパラメーターを指定しません。これはあなたがそれをすべき方法です。

public class Cell<T> 
{
    public Cell()
    {
    }
}

11

また、タイプをプロパティとして必要な場合:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

6

また、次のタイプのインスタンスを注入する必要がある場合:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.