代码之家  ›  专栏  ›  技术社区  ›  Jim

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

  •  72
  • Jim  · 技术社区  · 16 年前

    我有VB的背景,为了我的新工作,我正在转换成C语言。总的来说,我也在努力提高.NET的水平。我在人们发布的示例中看到过很多关键词“T”。C#中的“T”是什么意思?例如:

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

    什么是 T

    7 回复  |  直到 10 年前
        1
  •  52
  •   user39603    16 年前

    这是一种象征 generic type parameter . 它也可以是其他东西,例如:

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

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

        2
  •  47
  •   Joel Coehoorn    16 年前

    T本身不是关键字,而是泛型类型的占位符。见微软的 Introduction to Generics

    等效的VB.Net语法为:

    Public Class SomeBase(Of T As {Class, New}))
    
        3
  •  17
  •   biozinc    16 年前

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

    public class Dictionary<K,V> ...
    

    K 代表键和 V 为了价值。我想 T 代表类型。

        4
  •  6
  •   Community CDub    8 年前

    这将是一个“通用的”。正如人们已经提到的,有一个 Microsoft explanation 这是一个概念。至于为什么“T”-参见 this question .

    简而言之,它允许您创建一个专用于特定类型的类/方法。一个经典的例子是 System.Collections.Generic.List<T> 班这和 System.Collections.ArrayList ,但它只允许存储类型为的项 T . 这提供了类型安全性-您不能(意外或以其他方式)将错误类型的项目放入列表中。这个 System.Collections.Generic 名称空间包含其他几种不同的集合类型,它们利用了该名称空间。

        5
  •  4
  •   Yossi Dahan    16 年前

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

        6
  •  2
  •   jason    16 年前

    这个 T 泛型类中类型参数的名称。它代表“Type”,但你也可以叫它“Alice”

    ListOfIntegers , ListOfStrings ListOfChars , ListOfPersons 以此类推,但可以编写泛型类 List<T> 然后实例化类型的对象 List<Int32> List<string> , List<char> List<Person> . 编译器为您完成这项工作。

        7
  •  1
  •   Otávio Décio    16 年前