.NET で読み取り専用の汎用辞書はありますか? 質問する

.NET で読み取り専用の汎用辞書はありますか? 質問する

読み取り専用プロパティで辞書への参照を返しています。消費者がデータを変更できないようにするにはどうすればよいですか? これが であれば、IList単に を返すことができますAsReadOnly。辞書で同様のことができるでしょうか?

Private _mydictionary As Dictionary(Of String, String)
Public ReadOnly Property MyDictionary() As Dictionary(Of String, String)
    Get
        Return _mydictionary
    End Get
End Property

ベストアンサー1

.NET 4.5

.NET Framework 4.5 BCLでは、ReadOnlyDictionary<TKey, TValue>ソース)。

.NET Framework 4.5 BCL にはAsReadOnlyfor ディクショナリが含まれていないため、独自のディクショナリを作成する必要があります (必要な場合)。次のようなものになりますが、そのシンプルさが、.NET 4.5 で優先事項とされなかった理由を浮き彫りにしているのかもしれません。

public static ReadOnlyDictionary<TKey, TValue> AsReadOnly<TKey, TValue>(
    this IDictionary<TKey, TValue> dictionary)
{
    return new ReadOnlyDictionary<TKey, TValue>(dictionary);
}

.NET 4.0 以下

.NET 4.5より前では、.NETフレームワーククラスには、Dictionary<TKey, TValue>以下のような読み取り専用コレクションラップリストただし、作成するのは難しくありません。

ここに例があります- 他にもたくさんありますGoogle で ReadOnlyDictionary を検索

おすすめ記事