例如我有这个C#方法:
public static int Count<T>(IEnumerable<T> sequence)
{
return 0;
}
为什么我必须写Count<T>
而不是Count
,即使我在方法中没有使用T
类型?
答案 0 :(得分:5)
你没有拥有。你可以完全不通用:
public static int Count(IEnumerable sequence)
{
return 0;
}
从IEnumerable<out T> : IEnumerable
起,这将适用于所有序列。
不这样做的一个原因是,如果你打算这样做:
int count = 0;
foreach(var obj in sequence) count++;
return count;
然后非通用版本与值类型一起使用时,将每个值框 - 增加分配。通用版本不会进行任何拳击。