簡體   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