C# 什么';s泛型变量用于定义泛型

C# 什么';s泛型变量用于定义泛型,c#,.net,generics,C#,.net,Generics,我当时正在看电视上的泛型 我们可以使用T for type class Generics<T> { List<T> list = new List<T>(); public void fun(T no1, T no2) { list.Add(no1); } } 我很想知道为什么C允许我们对类型使用任何变量,以及这种方法的优点是什么它不仅仅是泛型类型的别名

我当时正在看电视上的泛型

我们可以使用
T for type

class Generics<T> 
    {
        List<T> list = new List<T>();
        public void fun(T no1, T no2)
        {
            list.Add(no1);
        }
    }

我很想知道为什么C允许我们对类型使用任何变量,以及这种方法的优点是什么

它不仅仅是泛型类型的别名,只是为了让代码更具可读性。看一看
字典
——这比
字典
要清楚得多。

使用变量的原因是可以有多个变量(类型),它们的名称不同。

使用
T
是一种惯例

T
用于类型

您可以使用
TOut
TIn
来更好地描述您的意图,或者
twhatnever

查看或获取有关泛型命名约定的更多信息

搜索?q=泛型+命名+约定


您需要为泛型参数指定一个名称,否则无法引用它。例如,你还可以如何编写你的乐趣(T no1,T no2)方法?您不能使用实际类的名称(因为您还不知道它是什么-这就是您使用泛型的原因!),但是您需要以某种方式引用它,因此您可以指定一个引用未知类的名称,在本例中是t


至于为什么经常使用T,这只是一个惯例——T代表(T)ype。你可以用任何你想要的东西。通常,当一个类有多个泛型参数时,您会将它们视为,例如,GenericClass,这只是一个基于从T开始按字母顺序排列的约定。通常,您会看到更有意义的名称,例如,泛型字典类可以定义为dictionary,以便更清楚地了解类型的用途。

T或X只是“Type”变量的表示形式,您可以使用其他类型,只要没有名为T或X的已知类型

class Generics<X> 
    {
        List<X> list = new List<X>();
        public void fun(X no1, X no2)
        {
            list.Add(no1);
        }
    }