Недавно у меня были некоторые проблемы с классом синглтона, который лениво инициализировал словарь, когда второй поток пытался использовать его до того, как он был фактически заполнен. Поэтому я реализовал инициализацию переменных через классLazy
.
Вот мой код:
private static Dictionary GroupDefaults
{
get { return mGroupDefaults.Value; }
}
private static Lazy> mGroupDefaults =
new Lazy>(delegate
{
Dictionary defaults = new Dictionary();
foreach (KeyValuePair groupDef in Groups)
defaults.Add(groupDef.Key, groupDef.Value.First().Key);
return defaults;
});
Это устранило проблему, и теперь я рассматриваю возможность сделать это своей обычной практикой, чтобы использовать класс Lazy
везде, где я выполняю ленивую инициализацию, чтобы избежать любой возможной проблемы с резьбой. Итак, в основном я хотел бы знать, является ли это хорошей/обычной практикой? Или это повлияет на производительность или что-то в этом роде?