gpt4 book ai didi

F#:处置闭包内部的资源?

转载 作者:行者123 更新时间:2023-12-03 07:55:51 25 4
gpt4 key购买 nike

假设我在诸如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")

完成关闭后,有没有办法关闭StreamWriter?还是需要用具有Write()方法和Dispose()方法的包装对象替换闭包? (这当然是一个简单的例子。)谢谢。

最佳答案

是的,您应该使用方法和IDisposable将闭包替换为Dispose()对象。 (或者,返回一个闭包的元组,第二个闭包调用Close()或诸如此类,然后像这样将其留给调用方。)

(在使用时,应使用System.IO.Path.Combine(),而不是使用字符串格式将文件名粘合在一起。)

关于F#:处置闭包内部的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com