回答
简单地讲,这是约束通用参数传递给一个类(或者更具体地说是一个可以是类,接口,委托或数组类型的引用类型)。
有关详细信息,请参阅此MSDN article。
'T'表示泛型类型。这意味着它可以接受任何类型的课程。以下文章可能有所帮助:
http://www.15seconds.com/issue/031024.htm
这是一个generic type constraint。在这种情况下,这意味着泛型T
必须是引用类型(类,接口,委托或数组类型)。
这意味着所使用的类型如T
时的一般方法,使用必须是类 - 即,它不能是一个结构或内置在数字像int
或double
// Valid:
var myStringList = DoThis<string>();
// Invalid - compile error
var myIntList = DoThis<int>();
这是一个类型约束T
,指定它必须是一个类。
的where
子句可用于指定其他类型的限制,例如:
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
clause,或generic parameter constraints。
可以将它们组合在一起,例如:'where T:class,IComparable,new()' – Izzy 2016-03-10 09:49:44
这限制了T
到参考类型。您将无法将值类型(struct
s和基本类型除string
)放在那里。
它被称为类型参数约束。它有效地限制了T的类型。
type参数必须是引用 类型;这也适用于任何类, 接口,委托或数组类型。
T代表的对象类型,它意味着你可以给任何类型的。 IList:如果IList =新IList; 现在s.add(“总是接受字符串。”)。
where T: class
的原意是指T has to be a class
。它可以是任何参考类型。现在,只要有任何代码调用您的DoThis<T>()
方法,它必须提供一个类来取代T。例如,如果我是叫你DoThis<T>()
方法那么我将不得不调用它像以下:
DoThis<MyClass>();
如果您metthod就像是这样的:
public IList<T> DoThis<T>() where T : class
{
T variablename = new T();
// other uses of T as a type
}
然后在以往任何时候牛逼出现在方法,它将被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
}
这里t代表一个Class.It可以是引用类型。
- 1. 什么?在C#中是什么意思?
- 2. C中##是什么意思?
- 3. 在c/C++中,^ =是什么意思?
- 4. 是什么意思:是什么意思?
- 5. **是什么意思,C?
- 6. %* c是什么意思?
- 7. 这是什么意思? [c#]
- 8. 这是什么意思-c
- 9. 这是什么意思 - C#
- 10. cmd/C是什么意思?
- 11. - >在C++中是什么意思?
- 12. 在c#中,它是什么意思'??'?
- 13. '“”''在C#中的“”+ ex'是什么意思?
- 14. 在C++中'System :: String ^'是什么意思?
- 15. 在c#中0u是什么意思?
- 16. 什么是(int)在c#中的意思?
- 17. 在C#中,/ =是什么意思?
- 18. 在C#中,expressionStack_xx_x是什么意思?
- 19. 什么是connection.Dispose()在C#中的意思?
- 20. “::”在C++中是什么意思?
- 21. “void *(*)(void *)”在C++中是什么意思?
- 22. 在C++中,“name :: name”是什么意思?
- 23. “.. ::”是什么意思?在C#中?
- 24. 在Objective C中,“^ {...}”是什么意思?
- 25. 在C++中'&'是什么意思?
- 26. 是什么意思,在Python中是什么意思?
- 27. 什么意思:在x86中是什么意思?
- 28. 什么是“DateTime?”在C#中是什么意思?
- 29. 什么是双重?在C#中是什么意思?
- 30. 是什么(“{0,1}”,num);在C#中是什么意思?
您错过了一个案例。 T的类型参数也可以是任何其他被约束为引用类型的类型参数。 – 2010-09-24 15:23:25
Upvoted为所提供的MSDN链接。它非常有用 – SaddamBinSyed 2017-09-13 08:32:07