私はある種のキーと値のペアを持つクラスを作成しています。現在、次のようなものがあります。静的コレクションへのスレッドセーフなアクセス
private static Dictionary<Type, List<PropertyInfo>> PropertyCache { get; set; }
これはスレッドセーフな方法で実装する正しい方法ですか?何らかの理由で、にstatic
の効果について私に悩まされることがあります。これが正しければ、コードの残りの部分でそれを避けることができるように、間違った方法を示すことができます。
また、読み取り専用する必要があります(私は今までのコレクションから物事を追加・削除するつもりですか)?
それは違いを行った場合、プロパティは常にprivate
宣言されます。ジョンスキートで
次の議論:事前に
おかげで
タグ付けされたC#が、VBで回答はOKです、私は "バイリンガル" はそう
EDITを話すようにしていますが、彼の答えのコメントでは、使用は次のようになります:
// I will do this
PropertyCache.Add(typeof(string), new List<PropertyInfo>());
PropertyCache.Remove(typeof(string));
// I will never do this
PropertyCache = new Dictionary<Type, List<PropertyInfo>>();
私はコレクションを繰り返し処理することはなく、キーだけでアクセスできます。
「コレクションからアイテムを削除するだけです」とはどういう意味ですか? –
@SteveDanner、私は決して行くつもりはない 'PropertyCache =新しい辞書>' 'PropertyCache.Add(item)'のみ: –
これで、ReadOnlyDictionaryはうまくいきません。ジョン・スケートの答え、IMOを考えてみましょう。 –