不,您不能将结果作为元组返回——您需要在从函数返回结果之前将值分配给 byref 值。还要注意这个[<Out>]
属性——如果你忽略它,这个参数就像一个 C#ref
参数。
open System.Runtime.InteropServices
type Foo () =
static member TryParse (str : string, [<Out>] success : byref<bool>) : Foo =
// Manually assign the 'success' value before returning
success <- false
// Return some result value
// TODO
raise <| System.NotImplementedException "Foo.TryParse"
如果您希望您的方法具有规范的 C#Try
签名(例如,Int32.TryParse
),您应该bool
从您的方法返回 a 并将可能解析的内容Foo
通过 传递回byref<'T>
,如下所示:
open System.Runtime.InteropServices
type Foo () =
static member TryParse (str : string, [<Out>] result : byref<Foo>) : bool =
// Try to parse the Foo from the string
// If successful, assign the parsed Foo to 'result'
// TODO
// Return a bool indicating whether parsing was successful.
// TODO
raise <| System.NotImplementedException "Foo.TryParse"