我刚接触C#,直接开始为我收到的一个项目修改一些代码.但是,我一直看到这样的代码:
class SampleCollection<T>
我无法理解
<T>
意思也不是它叫什么.
如果有人愿意帮我说出这个概念的名字,我可以在网上搜索.然而,到目前为止,我还是一无所知.
我刚接触C#,直接开始为我收到的一个项目修改一些代码.但是,我一直看到这样的代码:
class SampleCollection<T>
我无法理解
<T>
意思也不是它叫什么.
如果有人愿意帮我说出这个概念的名字,我可以在网上搜索.然而,到目前为止,我还是一无所知.
这是一张Generic Type Parameter美元的票.
泛型类型参数允许您在编译时为方法指定任意类型T,而无需在方法或类声明中指定具体类型.
例如:
public T[] Reverse<T>(T[] array)
{
var result = new T[array.Length];
int j=0;
for(int i=array.Length - 1; i>= 0; i--)
{
result[j] = array[i];
j++;
}
return result;
}
反转数组中的元素.这里的关键点是,数组元素可以是任何类型,并且函数仍然可以工作.在方法调用中指定类型;类型安全仍有保证.
因此,要反转字符串数组,请执行以下操作:
string[] array = new string[] { "1", "2", "3", "4", "5" };
var result = reverse(array);
将在{ "5", "4", "3", "2", "1" }
中的result
中生成字符串数组
这与调用普通(非泛型)方法的效果相同,如下所示:
public string[] Reverse(string[] array)
{
var result = new string[array.Length];
int j=0;
for(int i=array.Length - 1; i >= 0; i--)
{
result[j] = array[i];
j++;
}
return result;
}
编译器发现array
包含字符串,因此它返回一个字符串array.类型string
将替换T
类型参数.
泛型类型参数也可用于创建泛型类.在您给出的SampleCollection<T>
的示例中,T
是任意类型的占位符;这意味着SampleCollection
可以表示对象的集合,创建集合时指定对象的类型.
所以:
var collection = new SampleCollection<string>();
创建可以保存字符串的集合.上面所示的Reverse
方法的形式稍有不同,可以用来反转集合的成员.