Какие преимущества Lazy предлагает по сравнению со стандартным отложенным созданием экземпляров?

Рассмотрим этот пример, он показывает два возможных способа ленивой инициализации. Есть ли здесь какие-то особые преимущества использования Lazy , кроме поточно-ориентированной?

class Customer {
    private decimal? _balance2;
    private static decimal GetBalanceOverNetwork() {
        //lengthy network operations
        Thread.Sleep(2000);
        return 99.9M;
    }

    public decimal? GetBalance2Lazily() {
        return _balance2 ?? (_balance2 = GetBalanceOverNetwork());
    }

    private readonly Lazy<decimal> _balance1 = new Lazy<decimal>(GetBalanceOverNetwork);

    public Lazy<decimal> Balance1 {
        get { return _balance1; }
    }
}

ОБНОВЛЕНИЕ:

Рассмотрите приведенный выше код как простой пример, типы данных не имеют значения, здесь нужно сравнить Lazy < T> по сравнению со стандартной ленивой инициализацией.

12
задан Valentin Vasilyev 25 July 2011 в 08:03
поделиться