最近、辞書を初期化するのが面倒なsingeltonクラスで、2番目のスレッドが実際に入力される前にそれを使用しようとする問題が発生していました。そこで、Lazy<T>
クラスを介して変数の初期化を実装しました。
これが私のコードです:
private static Dictionary<string, string> GroupDefaults
{
get { return mGroupDefaults.Value; }
}
private static Lazy<Dictionary<string, string>> mGroupDefaults =
new Lazy<Dictionary<string,string>>(delegate
{
Dictionary<string, string> defaults = new Dictionary<string, string>();
foreach (KeyValuePair<string, UnitGroup> groupDef in Groups)
defaults.Add(groupDef.Key, groupDef.Value.First().Key);
return defaults;
});
Lazy<T>
これで問題が修正され、スレッドの問題を回避するために、怠惰な初期化を行う場所でクラスを使用することを定期的に行うことを検討しています。それで、基本的に私はこれが良い/一般的な習慣であるかどうか知りたいですか?それとも、パフォーマンスなどに悪影響を及ぼしますか?