为什么在静态构造函数中检查泛型类的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");
        }
    }
}

为什么不只是非静态构造函数呢?

为什么在静态构造函数中检查泛型类的T类型比在非静态构造函数中检查要好

因为如果静态构造函数失败,您根本不能使用特定类型。因此,没有必要到处检查类型参数。

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

用法:

new Test<string>(); //throws TypeInitializationException