(在问了这个相关问题 之后,我还有一个问题。)
整个想法(AFAIK)是仅在需要时Lazy<T>
创建对象。为什么 ?因为创建起来很昂贵。
我想要的最后一Expensive
件事是该对象将被创建>1
时间。
我不在乎是否许多线程最终会产生相同的引用。我只是不希望他们创建多个实例。
所以Lazyinitializer
通过以下方式处理syncLock
:
LazyInitializer.EnsureInitialized (ref _expensive, ref useless, ref _sync, () => new Expensive());
可是怎么Lazy<T>
办呢?我在msdn中搜索过,找不到任何syncLock
超载...
我错过了什么?