1

Enumerable.ElementAt(TSource)メソッドへのMSDNライブラリエントリは言う

「ソースのタイプが IList を実装する場合、その実装は、指定されたインデックスで要素を取得するために使用されます。それ以外の場合、このメソッドは指定された要素を取得します。」

次の例があるとします。

        ICollection<int> col = new List<int>() { /* fill with items */ };
        IList<int> list = new List<int>() { /* fill with items */ };

        col.ElementAt(10000000);
        list.ElementAt(10000000);

実行に違いはありますか?または、ElementAtcolは、ICollection<> としてのみ宣言されていますが、IList<> も実装していることを認識していますか?

ありがとう

4

2 に答える 2

4

ElementAt変数自体の型は、メソッドとは無関係です。それに関する限り、それは としてのみ宣言されIEnumerable<T>ます。それがパラメーターの型であるためです。(両方の呼び出しが同じ拡張メソッドにバインドされます。)

でテストされるのは、オブジェクトの実行時の型ですElementAt

于 2010-04-28T15:26:15.840 に答える
0

いいえ、なぜ違いがあるはずです。ElementAt()の拡張メソッドですIEnumerable<T>。この場合、ポリモーフィズムはありません。

于 2010-04-28T15:28:21.707 に答える