Плохо ли использование Lazy для производительности?

Недавно у меня были некоторые проблемы с классом синглтона, который лениво инициализировал словарь, когда второй поток пытался использовать его до того, как он был фактически заполнен. Поэтому я реализовал инициализацию переменных через класс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везде, где я выполняю ленивую инициализацию, чтобы избежать любой возможной проблемы с резьбой. Итак, в основном я хотел бы знать, является ли это хорошей/обычной практикой? Или это повлияет на производительность или что-то в этом роде?

11
задан Alex Hope O'Connor 28 June 2012 в 01:36
поделиться