2

IListと の一般的な対応物が同じメソッドとプロパティのセットをICollection持たない特定の理由はありますか? 彼らは彼らを動かしたようです。

元。 IList<T>もっている

int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
T this[int index] { get; set; }

しかしIList

int Add(object value);
void Clear();
bool Contains(object value);
int IndexOf(object value);
void Insert(int index, object value);
void Remove(object value);
void RemoveAt(int index);
bool IsFixedSize { get; }
bool IsReadOnly { get; }
object this[int index] { get; set; }
4

2 に答える 2

0

主要な設計上の決定は、.Net の配列が実際にはすべてIList<T>暗黙的に実装されているという事実に帰着したと思います。やIListなどのメソッドの多くは配列には適用されないため、別のインターフェイスに移動されました。RemoveClear

于 2011-05-12T19:17:06.667 に答える
0

IList<T>を実装ICollection<T>しているため、少なくとも のコンテキストでは、IList<T>どのインターフェースが何を持っているかは問題ではありません。その理由については、そのクレイジーな .NET チームの心の中で何が起こっているのか誰にもわかりません。ただし、「コレクション」がその内容を追加、削除、チェックするメソッドなどを必要とするのは、それらのメソッドがインデックス付きの「リスト」のコンテキストにない限り、論理的に思われます。リストについて概念的に話し始めると、インデクサー自体を必要とするインデックス作成と、要素を追加、削除、およびチェックするためのインデックスに依存するメソッドを追加します。

于 2011-05-12T19:07:06.903 に答える