T代表C#代表什么?

时间:2014-02-14 10:53:29

标签: c# generics

public void DisplayValue<T>(T field, string fieldname)

上述代码中T代表什么?

这样做的好处是什么?

我们可以在哪里使用它?

3 个答案:

答案 0 :(得分:2)

来自Generics (C# Programming Guide)

  

...通过使用泛型类型参数T,您可以编写单个类   其他客户端代码可以使用而不会产生成本或风险   运行时强制转换或装箱操作

答案 1 :(得分:1)

  

类型参数T:列表中元素的类型。

根据MSDN文档。

  

这样做的好处是什么?

该方法可以采用类型的匿名列表。

  

我们可以在哪里使用它?

例如,当必须对几种类型的几个列表进行相同的操作时。

答案 2 :(得分:1)

这是一个通用类型参数。

泛型类型参数允许您在编译时为方法指定任意类型T,而无需在方法或类声明中指定具体类型。

例如:

public T[] Reverse<T>(T[] array)
{
    var result = new T[array.Length];
    j=0;
    for(int i=array.Length; i>= 0; i--)
    {
        result[j] = array[i];
        j++;
    }
    return result;
}

反转数组中的元素。这里的关键点是数组元素可以是任何类型,函数仍然可以工作。您在方法调用中指定类型;类型安全仍然有保证。

所以,要反转一个字符串数组:

string[] array = new string[] { "1", "2", "3", "4", "5" };
var result = reverse(array);Will produce a string array in result of { "5", "4", "3", "2", "1" }

这与调用普通(非泛型)方法的效果相同,如下所示:

public string[] Reverse(string[] array)
{
    var result = new string[array.Length];
    j=0;
    for(int i=array.Length; i >= 0; i--)
    {
        result[j] = array[i];
        j++;
    }
    return result;

}编译器看到该数组包含字符串,因此它返回一个字符串数组。类型字符串替换T类型参数。


通用类型参数也可用于创建泛型类。

在您给出SampleCollection的示例中,T是任意类型的占位符;这意味着SampleCollection可以表示对象的集合,对象的类型是您在创建集合时指定的类型。

所以:

var collection = new SampleCollection<string>();

创建一个可以保存字符串的集合。上面所示的反向方法,以稍微不同的形式,可用于反转集合的成员。