假设以下代码:
let fn () =
use a = new System.IO.StreamWriter ("d:\\test.txt")
a
let b = fn ()
b.Write "t"
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
ObjectDisposedException:无法写入已关闭的TextWriter.
这是为什么?
use的范围是函数,fn所以a返回时它也被处理掉了.
解决这个问题的最简单方法是:
let fn () =
let a = new System.IO.StreamWriter ("d:\\test.txt")
a
let main() =
use b = fn ()
b.Write "t"
main()
Run Code Online (Sandbox Code Playgroud)