我对此的考虑是为什么任何人都更喜欢在静态构造函数中执行它,如果给定的类型在所有调用中都不正确,则只调用一次,而不是仅仅一次,我会在代码的所有部分中检测到错误类型的异常使用。
这是我的意思的例子:
internal sealed class GenericTypeThatRequiresAnEnum<T> {
static GenericTypeThatRequiresAnEnum() {
if (!typeof(T).IsEnum) {
throw new ArgumentException("T must be an enumerated type");
}
}
}
为什么不只是非静态构造函数?
答案 0 :(得分:4)
因为如果静态构造函数失败,你根本不能使用特定类型。 因此,没有必要在任何地方检查类型参数。
public class Test<T>
{
static Test()
{
throw new InvalidOperationException();
}
}
用法:
new Test<string>(); //throws TypeInitializationException