在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必须是一个类 – 即它不能是一个结构或内置数字,如int
或double
// 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。