"忽略"IDisposable的正确方法是什么?

Mis*_*hor 2 f#

我需要调用一个返回一些我不需要的值的函数.通常情况下,我只是管道ignore.但是如果返回的值是IDisposable什么呢?

ignore操作员是否负责处理传递的参数?从它的源代码,看起来不是:

[<CompiledName("Ignore")>]
let inline ignore _ = ()
Run Code Online (Sandbox Code Playgroud)

所以为了这个目的,use __ = someFunc ()我使用这个函数而不是写作:

let inline dispose (x : #IDisposable) = x.Dispose()

// usage example
someFunc () |> dispose
Run Code Online (Sandbox Code Playgroud)

我想知道,这是正确的方法,或者可能已经有这样的内置运营商?或者只是使用它会ignore好吗?

小智 5

我会用using.

using (someFunc ()) ignore
Run Code Online (Sandbox Code Playgroud)

另一种选择是use语言结构而不是函数.

use x = someFunc()
()
Run Code Online (Sandbox Code Playgroud)


Ank*_*kur 5

关于什么:

someFunc().Dispose()
Run Code Online (Sandbox Code Playgroud)

  • Coz Dispose是一种方法,而不是一种功能 (2认同)