クラス | 概念 |
---|---|
Collection<T> | ジェネリック コレクションの基本クラス |
KeyedCollection<TKey,TItem> | 値にキーが埋め込まれているコレクションの、抽象基本クラス |
ObservableCollection<T> | 更新されたときに通知する、動的データ コレクション |
クラス | 概念 |
---|---|
ReadOnlyCollection<T> | ジェネリック コレクションの基本クラス |
ReadOnlyObservableCollection<T> | ObservableCollection<T> |
ReadOnlyDictionary<TKey,TValue> | キーと値のペアのジェネリック コレクション |
ReadOnlyDictionary<TKey,TValue>.KeyCollection | ReadOnlyDictionary<TKey,TValue>のキーのコレクション |
ReadOnlyDictionary<TKey,TValue>.ValueCollection | ReadOnlyDictionary<TKey,TValue>の値のコレクション |
このクラスは、読み取り専用のコレクションを実装するときの基本クラスとして用意されています。注意 (継承者) - ReadOnlyCollection<T> クラス (System.Collections.ObjectModel) | Microsoft Learn
ReadOnlyCollection<int> collection1 = new ReadOnlyCollection<int>(new[] { 1, 2, 3 });
ICollection<int> collection2 = new ReadOnlyCollection<int>(new[] { 1, 2, 3 });
collection2.Add(5); // NotSupportedException「コレクションは読み取り専用です。」
コレクションの書き換えを防止するのが目的ならば、それをIReadOnlyList<T>やIReadOnlyCollection<T>として渡すだけで十分です。
IReadOnlyList<int> list = new[] { 1, 2, 3 };
list[0] = 5; // error CS0200: プロパティまたはインデクサー 'IReadOnlyList<int>.this[int]' は読み取り専用であるため、割り当てることはできません