where T : struct // T must be a struct
where T : new() // T must have a default parameterless constructor
where T : IComparable // T must implement the IComparable interface
字面意思是 < em > T has to be a class。它可以是任何引用类型。现在,无论何时任何代码调用您的 DoThis<T>()方法,它都必须提供一个类来替换 T。例如,如果我要调用您的 DoThis<T>()方法,那么我将不得不调用它,如下所示:
DoThis<MyClass>();
如果你的方法像下面这样:
public IList<T> DoThis<T>() where T : class
{
T variablename = new T();
// other uses of T as a type
}
然后,只要 T 出现在方法中,它就会被 MyClass 替换。所以编译器调用的最终方法如下所示:
public IList<MyClass> DoThis<MyClass>()
{
MyClass variablename= new MyClass();
//other uses of MyClass as a type
// all occurences of T will similarly be replace by MyClass
}