【发布时间】:2015-05-08 05:36:39
【问题描述】:
从 .NET 4 开始,Lazy<T> 可用于延迟初始化对象。直观地说,延迟初始化也可以在公共属性的 getter 中执行,以向调用者提供相同的功能。我想知道Lazy<T> 是否比后者有任何固有的优势,因此应该被首选?
我个人觉得Lazy<>会很快降低代码的可读性,但也许我只是看到它被滥用了。从好的方面来说,它确保了线程安全,但是有许多 .NET 同步结构——也许我错了——使得在 getter 中实现相同的功能变得相当容易。
在选择最佳方法时需要注意哪些事项?
【问题讨论】:
-
举一个没有
Lazy<T>的惰性初始化例子。这并不像你想象的那么容易。 -
默认:错过了,谢谢。这可以标记为重复。 @Ben Voigt:类似于帕特里克霍夫曼在他的回答中描述的内容。此外,我恳请投反对票的人向 cmets 提供如何改进这个问题(不得不说我对这个网站变得如此激进感到有点失望)。
标签: c# .net lazy-initialization