1. ホーム
  2. c#

[解決済み] C#でパラメータ制約のある汎用コンストラクタはありますか?

2022-04-16 22:57:40

質問

C#では、ジェネリックメソッドに以下のような制約を付けることができます。

public class A {

    public static void Method<T> (T a) where T : new() {
        //...do something...
    }

}

と指定するところ T は、パラメータを必要としないコンストラクタを持つ必要があります。というような制約を追加する方法はないでしょうか? を持つコンストラクタが存在します。 float[,] パラメータは? "です。

次のコードはコンパイルできません。

public class A {

    public static void Method<T> (T a) where T : new(float[,] u) {
        //...do something...
    }

}

回避策も有効?

解決方法は?

お気づきのように、これはできません。

回避策として、私は通常、型が T :

public class A {

    public static void Method<T> (T a, Func<float[,], T> creator) {
        //...do something...
    }

}