FSh*_*00b 9 f# closures dispose
假设我在诸如StreamWriter之类的资源上创建了一个闭包:
let currentdir = Directory.GetCurrentDirectory()
let testfile = sprintf "%s\\%s" currentdir "closuretest.txt"
let getwriter() =
let writer = new StreamWriter(testfile, false)
(fun() -> writer.Write "test")
Run Code Online (Sandbox Code Playgroud)
当我完成关闭时,有没有办法关闭StreamWriter?或者我需要用包含Write()方法和Dispose()方法的包装器对象替换闭包?(这当然是一个微不足道的例子.)谢谢大家.
是的,您应该IDisposable使用方法和a 替换对象的闭包Dispose().(或者,返回一个闭包元组,其中第二个调用Close()或诸如此类的东西,然后将它留给调用者.)
(当你使用它时,System.IO.Path.Combine()应该使用它,而不是将文件名与字符串格式粘合在一起.)