- 汎用ジェネリックコレクション ページ一覧
Collection
System.Collections.ObjectModel.Collectionクラスはジェネリックコレクションの基本クラスとして使えるクラスです。 並べ替えや述語を指定した検索の操作が用意されていない以外は、Listクラスとほぼ同じ操作が出来ます。
派生クラスから内部コレクションのIList<T>にアクセスするにはItemsプロパティを参照します。 また、次のプロテクトメソッドをオーバーライドすることで、要素の挿入・削除・設定時の動作を拡張出来ます。
メソッド | メソッドが呼ばれるタイミング |
---|---|
SetItem | 内部コレクションの要素を設定しようとしたとき |
InsertItem | 内部コレクションに要素を挿入しようとしたとき |
RemoveItem | 内部コレクションから要素を削除しようとしたとき |
ClearItems | 内部コレクションから全要素を削除しようとしたとき |
以下は、Collectionをクラスを継承して0または正の整数のみを格納できるコレクション型を実装する例です。
ReadOnlyCollection
System.Collections.ObjectModel.ReadOnlyCollectionクラスは読み取り専用のジェネリックコレクションを作成するためのクラスです。
ReadOnlyCollectionクラスはArray.AsReadOnlyメソッドやList.AsReadOnlyメソッドの戻り値として返され、配列・Listを読み取り専用にしたコレクションとして取得することができます。 また、ReadOnlyCollectionクラスのインスタンスを作成する場合は基になるIList<T>をコンストラクタで指定する必要があり、この場合は指定されたIList<T>に対する読み取り操作のみを許可するラッパーとして動作します。
読み取り操作のみを許可するため、Add, Remove, Clearなどのパブリックメソッドのほか、SetItem, RemoveItem, InsertItemなどのプロテクトメソッドも提供されません。 また、基になるIList<T>に変更を加えるとそれをラップするReadOnlyCollectionにも反映されます。 ReadOnlyCollectionをIListインターフェイスなどにキャストしてAdd, Removeなどのメソッドを呼び出した場合は例外NotSupportedExceptionがスローされます。
派生クラスからは、Itemsプロパティを参照することで基になったIList<T>にアクセスすることが出来ます。