English 中文(简体)
在C#中,“T”是什么意思?
原标题:
  • 时间:2008-12-30 14:01:36
  •  标签:

我有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 是泛型类中名为类型参数的名称。它代表“类型”,但你也可以叫它“艾丽斯”。

你可以使用泛型,在保证类型安全的前提下提高代码的复用性,避免不必要的重复代码。这样,你就不需要编写 ListOfIntegersListOfStringsListOfCharsListOfPersons 等类,而可以编写一个通用的类 List<T>,然后实例化 List<Int32>List<string>List<char>List<Person> 等类型的对象。编译器会帮你处理这些工作。

它意味着“任何班级”。它可以是“B”,“A”或者其他任何班级。我认为T被使用是因为“模板”。





相关问题
热门标签