請假設我有以下的擴展方法,以便能夠強制IEnumerable
的評價:接口向下轉換
public static List<T> EvaluateNow<T>(this IEnumerable<T> collection)
{
if (collection == null)
{
throw new ArgumentNullException("collection");
}
else
{
return (collection.ToList());
}
}
我想問一下,如果有在具有IList<T>
而不是List<T>
因爲這樣的任意點方法的返回類型(即向下轉換爲接口),以便既不將它也不依賴於特定的實現(即使返回值實際上總是爲List
)。
對於這個特定的功能,我不這麼認爲。另外我不認爲它的值得擁有這樣的擴展方法,它只是運行'.ToList()' – Magnus
IList允許許多實現之一,其中一個是列表。如果這對支持未來結構變化並不重要,那麼不會。 –
kenny
但是,這是一個很好的習慣。 –