泛型变量用于定义泛型的目的是什么

时间:2013-06-20 13:01:04

标签: c# .net generics

我正在msdn

上阅读泛型

我们可以使用T for type

按如下方式定义简单泛型类
class Generics<T> 
    {
        List<T> list = new List<T>();
        public void fun(T no1, T no2)
        {
            list.Add(no1);
        }
    }

然后我尝试将不同的变量用于类型,例如X for type如下,并且有效

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

感兴趣知道为什么C#允许我们使用任何类型的变量以及这种方法的优势

5 个答案:

答案 0 :(得分:10)

为了使代码更具可读性,它不仅仅是泛型类别的变量。看看Dictionary<TKey, TValue> - 它比Dictionary<T, X>要清晰得多。

答案 1 :(得分:3)

使用T是一种契约。

类型

T

如果更好地描述了您的意图,您可以使用TOutTIn,或TWhatever

有关泛型命名对话的详细信息,请查看herehere

  

搜索Q =泛型+命名+ convension

答案 2 :(得分:2)

使用变量的原因是可以有多个变量(类型)s,并且它们之间的区别是它们被命名。

答案 3 :(得分:0)

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

至于为什么经常使用T,它只是一个惯例--T代表(t)ype。你可以使用你想要的任何东西。通常,当一个类有多个通用参数时,您会将它们视为例如GenericClass&lt; T,U,V&gt;而且这只是一个基于从T字母顺序进行的约定。通常你会看到更有意义的名字,例如,泛型字典类可以被定义为Dictionary&lt; TKey,TValue&gt;使用的类型更清晰。

答案 4 :(得分:0)

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