Cached property vs Lazy

В. NET 4 следующий фрагмент с кэшированным свойством также можно записать с использованием класса System.Lazy . Я измерил производительность обоих подходов, и они почти одинаковые. Есть ли какая-то реальная выгода или волшебство, почему я должен использовать одно вместо другого?

Кэшированное свойство

public static class Brushes
{
    private static LinearGradientBrush _myBrush;

    public static LinearGradientBrush MyBrush
    {
        get
        {
            if (_myBrush == null)
            {
                var linearGradientBrush = new LinearGradientBrush { ...};
                linearGradientBrush.GradientStops.Add( ... );
                linearGradientBrush.GradientStops.Add( ... );

                _myBrush = linearGradientBrush;
            }

            return _myBrush;
        }
    }
}

Ленивый

public static class Brushes
{
    private static readonly Lazy _myBrush =
        new Lazy(() =>
            {
                var linearGradientBrush = new LinearGradientBrush { ...};
                linearGradientBrush.GradientStops.Add( ... );
                linearGradientBrush.GradientStops.Add( ... );

                return linearGradientBrush;
            }
        );

    public static LinearGradientBrush MyBrush
    {
        get { return _myBrush.Value; }
    }
}

50
задан BoltClock 27 February 2011 в 07:52
поделиться