爲什麼IList
和ICollection
的通用對應方不具有相同的一組方法和屬性有什麼特別的原因嗎?他們似乎把他們移動了。爲什麼IList和ICollection的通用副本不具有相同的方法集?
Ex。 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; }
我完全同意你的看法,ICollection應該有所有這些方法。奇怪的是,只有通用版本纔有。 – Magnus 2011-05-12 19:25:22
@Magnus:'ICollection'包括應該出現在非泛型'ICollection'和'IList'之間的類型的功能。相反,在「ICollection 」和「IEnumerable 」之間,應該有一種類似於非通用ICollection 的類型,但不能添加項目。當泛型和非泛型事物如此不同時,使用相同的名稱「ICollection」會令人困惑;減輕混淆的最好方法是忽略匹配的名稱。 –
supercat
2014-02-11 07:25:48