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