关于通用Where T

时间:2014-04-15 06:10:15

标签: c# where

void LoadParameters<T, TValue>(TValue strategy)
        where T : Parameters

看到这样的代码。如果没有where语句,程序是否仍能正常工作?

2 个答案:

答案 0 :(得分:4)

如果在没有where语句的情况下进行编译,它将正常工作。但是,编码器很可能不会毫无理由地把它放在那里。如果你删除它,它可能无法编译,因此无法正常工作。

答案 1 :(得分:1)

where子句称为“泛型类型约束”。通常T可以是任何类型,您必须在编写通用代码时考虑到这一点。通过约束T,继承或实现特定类型,您可以在通用代码中引用该类型的成员,因为编译器可以确保使用的任何对象都是该类型。您还可以使用classstructnew作为泛型类型约束,它们分别强制T为引用类型,值类型或具有无参数构造函数。