为什么在静态构造函数中检查泛型类的T类型比在非静态构造函数中检查要好
本文关键字:检查 构造函数 静态 泛型类 为什么 类型 | 更新日期: 2023-09-27 18:07:42
我的考虑是为什么任何人都喜欢在静态构造函数中这样做,如果给定的类型在所有调用中都不正确,则只调用一次,而不仅仅是一次,我希望在使用错误类型的代码的所有部分中获得异常。
这是我的意思的例子:
internal sealed class GenericTypeThatRequiresAnEnum<T> {
static GenericTypeThatRequiresAnEnum() {
if (!typeof(T).IsEnum) {
throw new ArgumentException("T must be an enumerated type");
}
}
}
为什么不只是非静态构造函数呢?
因为如果静态构造函数失败,您根本不能使用特定类型。因此,没有必要到处检查类型参数。
public class Test<T>
{
static Test()
{
throw new InvalidOperationException();
}
}
用法:
new Test<string>(); //throws TypeInitializationException