-3

それについての私の考慮事項は、指定された型がすべての呼び出しで1回だけではなく正しくない場合、1回だけ呼び出される静的コンストラクターでそれを行うことを誰もが好む理由であり、間違った型が使用されているコードのすべての部分で例外を取得することを期待しています。

これは私が意味することの例です:

internal sealed class GenericTypeThatRequiresAnEnum<T> {
    static GenericTypeThatRequiresAnEnum() {
        if (!typeof(T).IsEnum) {
        throw new ArgumentException("T must be an enumerated type");
        }
    }
}

非静的コンストラクターだけではないのはなぜですか?

4

1 に答える 1

4

静的コンストラクターが失敗した場合、特定の型をまったく使用できないためです。したがって、どこでも型引数をチェックする意味はありません。

 public class Test<T>
    {
        static Test()
        {
            throw new InvalidOperationException();
        }
    }

使用法:

new Test<string>(); //throws TypeInitializationException
于 2013-04-05T13:55:49.943 に答える