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,我会很高兴听到它们.)
谢谢
outparams自动tuplized.所以,你可以这样做:
let res, status = foo.TryConnect()
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅MSDN上的按引用传递.