.NET 9 のプレビュー版で ReadOnlySet 書けるようになっています。
github.com
Set を安全に使うのに役に立つでしょう。
■ allows ref struct
こんな感じで、読み取り専用の Set を作れるようです。
次の例では出力が 12 ではなく 123 であることもポイントです。
System.Collections.Generic.HashSet<char> hashSet = new ("12"); System.Collections.ObjectModel.ReadOnlySet<char> readOnlySet = new(hashSet); hashSet.Add('3'); // これはできる // readOnlySet.Add('4'); // CS1061 'ReadOnlySet<char>' に 'Add' の定義が含まれておらず、型 'ReadOnlySet<char>' の最初の引数を受け付けるアクセス可能な拡張メソッド 'Add' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください foreach(char c in readOnlySet) Console.Write(c); // 123
■ 備えよう
.NET 9。備えよう。