回答
簡單地講,這是約束通用參數傳遞給一個類(或者更具體地說是一個可以是類,接口,委託或數組類型的引用類型)。
有關詳細信息,請參閱此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