void LoadParameters<T, TValue>(TValue strategy)
where T : Parameters
看到这样的代码。如果没有where语句,程序是否仍能正常工作?
答案 0 :(得分:4)
如果在没有where语句的情况下进行编译,它将正常工作。但是,编码器很可能不会毫无理由地把它放在那里。如果你删除它,它可能无法编译,因此无法正常工作。
答案 1 :(得分:1)
该where
子句称为“泛型类型约束”。通常T
可以是任何类型,您必须在编写通用代码时考虑到这一点。通过约束T
,继承或实现特定类型,您可以在通用代码中引用该类型的成员,因为编译器可以确保使用的任何对象都是该类型。您还可以使用class
,struct
或new
作为泛型类型约束,它们分别强制T
为引用类型,值类型或具有无参数构造函数。