f# - 为什么使用比使用更好?

标签 f# dispose idisposable resource-management

根据 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/

相关文章:

ios - 将 Swift 转换为 F#——可选项和类型转换

c# - 即使使用 .Dispose(),文件也不会被释放

c# - IDisposable 的替代用途是什么?

C#:IDisposable 类需要 'using' 子句?

c# - 私有(private)无效处置( bool )?

F#:字典、哈希表和映射之间的区别

f# - 在 F# 中打印记录列表

f# - 为什么在创建 SqlClient 类型时会出现缺少的方法异常运行时?

xml - ActionScript - 将数据分配给对象数组后处理 XML?

Java Swing [JDialog]