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

时间:2012-08-21 14:20:02

标签: f# pass-by-reference c#-to-f# f#-3.0

所以我在C#中有这个课程:

public class Foo : IFoo {
    public bool TryConnect(out Status status) {
        ...
    }
}

我想用F#消费它。

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

type FooService (foo : IFoo) =

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

有没有办法在这里不使用“可变”?最后,我实际上并没有使用第一个初始化值。

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

由于

1 个答案:

答案 0 :(得分:5)

out参数自动归零。所以,你可以这样做:

let res, status = foo.TryConnect()

有关详细信息,请参阅MSDN上的Passing by Reference