質問: 型をデリゲートに制限できますか 型をデリゲートに制限できますか 型をクラスまたは構造体に制限できます。 型をデリゲートに制限できますか?
回答: 既に指摘したように、c#仕様では「デリゲート」の一般的な制約を許可していません。 また、コンパイラは汎用の制約として「デリゲート」サブクラスを受け入れません。 最善の方法は、テストして例外をスローすることです。 これをメソッドで示しますが、これがジェネリッククラスである場合、コンストラクターはチェックを行うのに最適な場所です。 public void foo(t x) { if (x == null) throw new argumentnullexception("x"); delegate d = x as delegate; if (d == null) throw new argumentexception("argument must be of delegate type.", "x"); // use d here. }