IDisposable
- это примерно детерминистически , то есть явное освобождение ресурсов. Таким образом, если замыкание само по себе не обеспечивает функцию удаления, ресурс не может быть освобожден детерминистически больше.
Как отметил Брайан, это может быть более или менее явным, хотя реализация IDisposable
предпочтительнее, так как use
+ IDisposable автоматически заботится об освобождении ресурсов в случае исключений.
Однако иногда бывает достаточно полностью скрыть одноразовый ресурс и получить информацию о том, что нужно сделать вместо этого.
let getWriter body =
use writer = new StreamWriter(testfile, false)
body(writer)
// ...
getWriter (fun writer -> writer.Write "test")