В. 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; }
}
}