Syntax byref引用到引用单元格';s值

Syntax byref引用到引用单元格';s值,syntax,f#,Syntax,F#,我偶然发现了这样的问题。我需要一个函数,它将知道它被调用了多少次。它需要是线程安全的,所以我想使用Interlocked.Increment增加计数器(在这种情况下,没有锁作为锁会带走与多线程相关的所有性能增益)。 无论如何,问题是语法:如何获取引用单元格(&!counter)中的值的引用 干杯,F#自动将ref类型的值视为byref参数,因此不需要任何特殊语法: let functionWithSharedCounter = let counter = ref 0 fun (

我偶然发现了这样的问题。我需要一个函数,它将知道它被调用了多少次。它需要是线程安全的,所以我想使用Interlocked.Increment增加计数器(在这种情况下,没有锁作为锁会带走与多线程相关的所有性能增益)。 无论如何,问题是语法:如何获取引用单元格(&!counter)中的值的引用

干杯,

F#自动将
ref
类型的值视为
byref
参数,因此不需要任何特殊语法:

let functionWithSharedCounter = 
    let counter = ref 0
    fun () ->
        let index = Interlocked.Increment(counter)
        printfn "captured value: %d" index
您还可以引用可变字段,因此也可以编写以下内容:

let index = Interlocked.Increment(&counter.contents)

这适用于归档的
内容
,但不适用于
计数器.Value
,因为这是一个属性。

很遗憾我没有尝试这个。出于某种原因,我认为ref的实现是:type ref
let index = Interlocked.Increment(&counter.contents)