在C#中,'T:class'是什么意思?

在C#中where T : class是什么意思?

IE浏览器。

 public IList<T> DoThis<T>() where T : class 

简单地说,这就是将generics参数约束为一个类(或者更具体地说是一个可以是类,接口,委托或数组types的引用types)。

有关更多详细信息,请参阅此MSDN文章 。

这是一个genericstypes约束 。 在这种情况下,这意味着genericstypesT必须是引用types(类,接口,委托或数组types)。

这是对T的types约束,指定它必须是一个类。

where子句可以用来指定其他types的约束,例如:

 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 

有关更多信息,请查看MSDN的where子句或generics参数约束页 。

这限制了T 引用types 。 你不能把值types( struct和基本types,除了string )放在那里。

这意味着当使用通用方法时用作T的types必须是一个类 – 即它不能是一个结构或内置数字,如intdouble

 // Valid: var myStringList = DoThis<string>(); // Invalid - compile error var myIntList = DoThis<int>(); 

where T: class意思是说T has to be a class 。 它可以是任何引用types。 现在,每当任何代码调用DoThis<T>()方法时,它必须提供一个类来replaceT。 例如,如果我打电话给你的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 } 

它被称为types参数约束。 它有效地约束了T可以是什么types。

types参数必须是引用types; 这也适用于任何类,接口,委托或数组types。

types参数约束(C#编程指南)

T代表一个对象types,这意味着你可以给任何types的。 IList:如果IList =新的IList; 现在s.add(“总是接受string。”)。

'T'代表一个通用types。 这意味着它可以接受任何types的课程。 以下文章可能有所帮助:

 http://www.15seconds.com/issue/031024.htm 

这里T指的是一个Class.It可以是一个参考types。