在.NET 4中,还可以使用System.Lazy<T>
类写入以下带有缓存属性的片段。我测量了两种方法的性能,并且几乎相同。对于我为什么应该使用一种优势,有没有什么真正的好处或魔力?缓存属性vs懒惰<T>
缓存物业
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<LinearGradientBrush> _myBrush =
new Lazy<LinearGradientBrush>(() =>
{
var linearGradientBrush = new LinearGradientBrush { ...};
linearGradientBrush.GradientStops.Add(...);
linearGradientBrush.GradientStops.Add(...);
return linearGradientBrush;
}
);
public static LinearGradientBrush MyBrush
{
get { return _myBrush.Value; }
}
}
通过使用'懒惰'你是'Lazy'写自己的实现。 (当然,这是一个很好的方法。) –
BoltClock
2011-02-27 17:49:42
有趣的是,我倾向于说它代码少,可读性好,但是你的例子证明情况并非如此。但是,再次,我已经有一个'Property'类来支持支持这个和更常见的后台字段行为的字段。 –
2011-02-27 17:49:58
懒惰允许线程安全 –
Tsayper
2015-08-07 06:29:26