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>
、メソッドとその依存関係を特定の実装に結び付けない(つまり、戻り値が常に実際にある場合でも)ことに意味があるかどうかを尋ねたいと思います。 a List
)。