避免使用"mutable"变量来调用带有byref(out in C#)参数的方法?

kno*_*cte 2 f# pass-by-reference c#-to-f# f#-3.0

所以我在C#中有这个类:

public class Foo : IFoo {
    public bool TryConnect(out Status status) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用F#消费它.

不幸的是我不得不使用一些hackery,例如:

type FooService (foo : IFoo) =

    member x.Execute() =
        let mutable status = Unchecked.defaultof< ^Status>
        foo.TryConnect(&status) |> ignore
        (...do something with status...)
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里不使用"可变"?最后,我实际上根本没有使用第一个初始化值.

(我正在使用F#2.0,但是如果你的提示只适用于F#3.0,我会很高兴听到它们.)

谢谢

Dan*_*iel 5

outparams自动tuplized.所以,你可以这样做:

let res, status = foo.TryConnect()
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅MSDN上的按引用传递.