let a = ref 0
let f (x: byref<int>) = x
f a // type error
System.Int32.TryParse("123",a) // works
f a
是因为a
可以传递到.NET库方法与byref<int>
类型的类型错误令人费解给我。为什么?为什么传递一个ref类型到一个F#函数中,期望得到一个byref类型错误?
编辑:我想我真的很不好地解释这个问题。 System.Int32.TryParse
的类型是string * byref<int> -> bool
,但它的工作原理。那么为什么我不能将a
转换成x:byref<int> -> int
类型的函数呢?这就是我所要求的。
什么是确切的错误? – TheQuickBrownFox
可能是https://stackoverflow.com/questions/5028377/understanding-byref-ref-and – rmunn
错误FS0001的副本:预计此表达式的类型为'byref',但这里的类型为'int ref' –