在Lazy.Force<T>
扩展方法的MSDN文档中说:
强制执行此值并返回其结果。与...一样 值。相互排除也用于防止其他线程 计算价值。
这是否意味着它等同于使用Lazy<T>
LazyThreadSafetyMode创建ExecutionAndPublication
实例,以便只有一个线程可以初始化实例?
由于
答案 0 :(得分:5)
是。它们都是相同的,并且都确保该值只计算一次。
答案 1 :(得分:0)
该方法存在并且不是函数,这有点奇怪-它不可组合并且复制了.Value
的行为。
我将定义以下内容(as seen in the F# compiler):
module Lazy =
// Lazy.force : Lazy<'T> -> 'T
let force (x: Lazy<'T>) = x.Force()