最近我遇到了一個懶惰的singelton類的問題,初始化一個字典,第二個線程會在實際填充之前嘗試使用它。所以我通過Lazy<T>
類實現了變量初始化。正在使用懶惰<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>
類的任何地方我做延遲初始化,以避免任何可能的線程問題。所以基本上我想知道這是否是好的/常見的做法?或者它會對業績或其他事情產生影響?
所以它的一個好習慣使用懶惰類? –
@ AlexHopeO'Connor這就是爲什麼它被添加!使用這個類的缺點是,字段/屬性的聲明變得有點混亂(正如你所看到的),但是在性能方面,它是穩定的。 – dlev
這就是我需要聽到的,只是我在其他人的代碼中沒有看到它的許多例子。 –