我有VB的背景,现在我要转到C#去我的新工作。我也试图在.NET方面变得更好。我看过很多人发布的示例中使用了关键字“T”。在C#中,“T”是什么意思?例如:
public class SomeBase<T> where T : SomeBase<T>, new()
T
是做什么的?我为什么要使用它?
我有VB的背景,现在我要转到C#去我的新工作。我也试图在.NET方面变得更好。我看过很多人发布的示例中使用了关键字“T”。在C#中,“T”是什么意思?例如:
public class SomeBase<T> where T : SomeBase<T>, new()
T
是做什么的?我为什么要使用它?
这是泛型类型参数的符号。它也可以是其他形式,例如:
public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()
仅限T是由Microsoft默认使用和推荐的。
T不是一个关键字,而是一个占位符,表示通用类型。请参阅 Microsoft 的泛型入门。
等价的VB.Net语法将是:
Public Class SomeBase(Of T As {Class, New}))
另一个代替 T 使用的好例子是哈希表类,例如
public class Dictionary<K,V> ...
K
代表键,V
代表值。我认为T
代表类型。
你可能看过这个东西。如果你能联想起来,它应该会很有帮助。
那将是一个“范型”。正如人们已经提到的,有一个 Microsoft 对这个概念的解释。至于为什么要用“T” - 参见此问题。
简而言之,它允许你创建一个专门针对特定类型的类/方法。一个经典的例子是 System.Collections.Generic.List<T>
类。它与 System.Collections.ArrayList
相同,只是它允许你只存储类型为 T
的项目。这提供了类型安全性——你不能(无论是意外还是其他方式)将错误类型的项放入列表中。 System.Collections.Generic
命名空间包含几种不同的集合类型,这些类型都是基于此功能实现的。
至于您可以在哪里使用它 - 那取决于您。有许多用例不时出现。大多数情况下,它是一种自制的集合(当内置的集合不足时),但它确实可以是任何东西。
最好的方法是熟悉“泛型”,网络上有许多资源,这里有一个。
T不是关键字,而是一个名字,据我所知可以是任何东西,但T是一个约定(当只需要一种类型时)。
T
是泛型类中名为类型参数的名称。它代表“类型”,但你也可以叫它“艾丽斯”。
你可以使用泛型,在保证类型安全的前提下提高代码的复用性,避免不必要的重复代码。这样,你就不需要编写 ListOfIntegers
、ListOfStrings
、ListOfChars
、ListOfPersons
等类,而可以编写一个通用的类 List<T>
,然后实例化 List<Int32>
、List<string>
、List<char>
和 List<Person>
等类型的对象。编译器会帮你处理这些工作。
它意味着“任何班级”。它可以是“B”,“A”或者其他任何班级。我认为T被使用是因为“模板”。