ObjectModel名前空間

クラス 概念
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>

このクラスは、読み取り専用のコレクションを実装するときの基本クラスとして用意されています。注意 (継承者) - 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]' は読み取り専用であるため、割り当てることはできません
Microsoft Learnから検索