私はMVVMでWPFアプリを構築しており、ObservableCollectionを使用しています。ViewModel で作業しているときに、ObservableCollection の型定義を調べることにしましたが、奇妙なことに気付きました。
// class definition for ObservableCollection
ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged
// derives from Collection<T>
...
// class definition for Collection<T>
Collection<T> : IList<T>, ICollection<T>, IEnumerable<T> ... (as well as non-generics)
さて、ここで質問です:
If ICollection<T> implements IEnumerable<T>
AND
IList<T> implements ICollection<T> AS WELL AS IEnumerable<T>
...
...
Why does Collection<T> implement ALL THREE?
これは本当にどのように実装されているのですか、それともこの VS2010 が私にいたずらをしているのですか?