根据 this MSDN page 上的最后一句话use
优于using
.我在别处听过(例如 this answer)。为什么是这样?我意识到use
是后来添加的。但是有什么区别呢?从表面上看,using
似乎更有用,因为您可以控制何时 Dispose()
被调用,如果需要,您可以显式忽略绑定(bind)值(例如 (fun _ -> ...)
)。
最佳答案
您可以使用 use
控制何时调用 dispose同样,只需使用通常的作用域结构(如括号或 begin
- end
),例如
let F() =
let x = 4
(
use file = System.IO.File.Open("foo.xml", System.IO.FileMode.Append)
let z = 4
printfn "file still open here"
)
printfn "file was already closed/disposed"
但我认为这很少有用。我认为不想命名/使用
IDisposable
的情况也很少见。目的。 use
在语法上更方便,并且 95% 的时间都可以满足您的需求,所以我认为这就是首选它的原因。
关于f# - 为什么使用比使用更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5046567/