[英]why a method has to be generic when passing a generic type
例如我有这个C#方法:
public static int Count<T>(IEnumerable<T> sequence)
{
return 0;
}
为什么即使我没有在方法内部使用T
类型,我也必须写Count<T>
而不是Count
?
你不必 。 您可以完全非通用:
public static int Count(IEnumerable sequence)
{
return 0;
}
并且由于IEnumerable<out T> : IEnumerable
,所以这将适用于所有序列。
不这样做的原因之一是,如果您打算这样做:
int count = 0;
foreach(var obj in sequence) count++;
return count;
然后将非通用版本与值类型一起使用时,会将每个值装箱 -增加分配。 通用版本不会进行任何装箱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.