繁体   English   中英

为什么在传递通用类型时方法必须是通用的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM