在.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