我想有些人可能能够回答这个问题,这是一个出于好奇的问题:
.NET v2 中引入的来自的泛型CreateInstance
方法System.Activator
对泛型参数没有类型限制,但需要激活类型的默认构造函数,否则MissingMethodException
会抛出 a。对我来说,这个方法似乎很明显应该有一个类型约束,比如
Activator.CreateInstance<T>() where T : new() {
...
}
只是一个遗漏或一些轶事潜伏在这里?
更新
正如所指出的,编译器不允许您编写
private T Create<T>() where T : struct, new()
error CS0451: The 'new()' constraint cannot be used with the 'struct' constraint
但是,请参阅注释,结构可以用作指定 new() 约束的通用方法的类型参数。在这种情况下,给定的答案似乎是不限制方法的唯一正当理由......
感谢您查看此内容!