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


79

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

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

怎么T办?我为什么要使用它?


1
T〜

Answers:


50

它是通用类型参数的符号。也可能是其他内容,例如:

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

只有T是Microsoft使用和鼓励使用的默认值。


45

T本身不是关键字,而是泛型类型的占位符。请参阅Microsoft泛型简介

等效的VB.Net语法为:

Public Class SomeBase(Of T As {Class, New}))

15

would哈希表类是一个很好的例子,它代替T使用另一个名称,例如

public class Dictionary<K,V> ...

其中K代表关键和V价值。我认为T代表类型。

您可能已经看到了。如果可以建立连接,那应该会很有帮助。


5

那将是一个“通用”。正如人们已经提到的,微软对此概念进行了解释。至于为什么“ T”-看到这个问题

简而言之,它允许您创建专门针对特定类型的类/方法。一个经典的例子是System.Collections.Generic.List<T>课程。System.Collections.ArrayList与之相同,除了它只允许您存储type的项T。这提供了类型安全性-您不能(偶然或其他方式)将错误类型的项目放入列表中。该System.Collections.Generic命名空间包含几个不同的集合类型,其利用了这一点。

至于您可以在哪里使用它-由您决定。有很多不时出现的用例。通常,这是一种自制的集合(当内置集合不足时),但实际上可以是任何东西。


3

最好的方法是让自己熟悉“泛型”,网络上的许多资源,这是一个

据我所知,T不是关键字而是名称,可以是任何东西,但是T是约定(当只需要一种类型时,很容易)


2

T是泛型类的类型参数的名称。它代表“类型”,但您也可以将其称为“爱丽丝”。

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


1

它的意思是“任何阶级”。可以是“ B”,“ A”等。我认为使用T是因为“模板”


在这种情况下,类型比类更合适,因为T既可以是引用类型,也可以是值类型。
Brian Rasmussen

1
我相信“模板”术语来自C ++模板。大写字母的参数听起来像C ++宏。
Michael Meadows

T在C ++模板中的相同角色无疑受到青睐(但它仍然是“类型”的简称-它代替了类型,而不是模板)
James Curran,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.