C#中“T”是什么意思?

时间:2008-12-30 14:01:37

标签: c# .net generics

我有一个VB背景,我正在为我的新工作转换为C#。我也试图在.NET上做得更好。我已经看到关键字“T”在人们发布的样本中使用了很多。 C#中的“T”是什么意思?例如:

public class SomeBase<T> where T : SomeBase<T>, new()

T做什么?我为什么要使用它?

7 个答案:

答案 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参数的名称。它代表“类型”,但你也可以称之为“爱丽丝”。

您可以使用泛型以类型安全的方式提高可重用性,而无需不必要地复制代码。因此,您不需要为ListOfIntegersListOfStringsListOfCharsListOfPersons等编写类,而是可以编写泛型类List<T>然后编写实例化List<Int32>List<string>List<char>List<Person>类型的对象。编译器为您完成工作。

答案 6 :(得分:1)

这意味着“任何阶级”。它可能是“B”,“A”,等等。我认为使用T是因为“模板”