我有一个VB背景,我正在为我的新工作转换为C#。我也试图在.NET上做得更好。我已经看到关键字“T”在人们发布的样本中使用了很多。 C#中的“T”是什么意思?例如:
public class SomeBase<T> where T : SomeBase<T>, new()
T
做什么?我为什么要使用它?
答案 0 :(得分:49)
这是generic type parameter的符号。它也可能是其他东西,例如:
public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()
只有T是Microsoft使用和鼓励的默认值。
答案 1 :(得分:45)
T不是关键字per-se,而是泛型类型的占位符。请参阅Microsoft的Introduction to Generics
等效的VB.Net语法是:
Public Class SomeBase(Of T As {Class, New}))
答案 2 :(得分:14)
使用另一个名称代替T would
的一个很好的例子是哈希表类,例如。
public class Dictionary<K,V> ...
其中K
代表Key,V
代表值。我认为T
代表类型。
你可能已经看过这个了。如果你可以建立联系,那应该是非常有帮助的。
答案 3 :(得分:5)
那将是一个“通用”。正如人们已经提到的那样,这个概念有一个Microsoft explanation。至于“T”的原因 - 见this question。
简而言之,它允许您创建专门用于特定类型的类/方法。一个经典的例子是System.Collections.Generic.List<T>
类。它与System.Collections.ArrayList
相同,只是它允许您仅存储T
类型的项目。这提供了类型安全性 - 您不能(意外或以其他方式)将错误类型的项目放入列表中。 System.Collections.Generic
命名空间包含其他几种使用它的不同集合类型。
至于你可以使用它的地方 - 这取决于你。有许多用例不时出现。大多数情况下它是某种自制的系列(当内置的系列不够时),但它确实可以是任何东西。
答案 4 :(得分:4)
最好的方法是让自己熟悉“泛型”,网上有很多资源,这里是one
T不是一个关键字,而是一个名字,就我所知,可能是任何东西,但是T是惯例(只需要一种类型的coruse)
答案 5 :(得分:2)
T
是泛型类中type参数的名称。它代表“类型”,但你也可以称之为“爱丽丝”。
您可以使用泛型以类型安全的方式提高可重用性,而无需不必要地复制代码。因此,您不需要为ListOfIntegers
,ListOfStrings
,ListOfChars
,ListOfPersons
等编写类,而是可以编写泛型类List<T>
然后编写实例化List<Int32>
,List<string>
,List<char>
和List<Person>
类型的对象。编译器为您完成工作。
答案 6 :(得分:1)
这意味着“任何阶级”。它可能是“B”,“A”,等等。我认为使用T是因为“模板”