F# 等价于析构函数

标签 f# finalizer c#-to-f#

我正在将包装非托管库的 C# 类转换为 F#。我遇到了重写随后的析构函数这个看似简单的问题。

class Wrapper {

    // P/Invoke ellided

    private SomeType x;

    public Wrapper() {
        x = new SomeType();
        Begin();
    }

    public ~Wrapper() {
        End();
    }

我现在拥有的简化 F# 代码如下:
type Wrapper() =
  [<Literal>]
  static let wrappedDll = "Library.dll"

  [<DllImport(wrappedDll , EntryPoint = "Begin")>]
  static extern void Begin()

  [<DllImport(wrappedDll , EntryPoint = "End")>]
  static extern void End()

  let x = new SomeType()

  do
    Begin()

如何修改此 F# 代码以具有相同的行为?我对 F# 析构函数的搜索在我拥有的书籍或网络上都没有结果。

谢谢你。

最佳答案

您是否尝试过寻找 F# 终结器?

override x.Finalize() = ...

关于F# 等价于析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5676791/

相关文章:

c++ - 无法使用 Bonjour SDK 设置 TXTRecord(COM Wrapper to CComObject< CTXTRecord >*)

regex - F# 正则表达式匹配链

c# - 为什么在对象上调用终结器

f# 模式匹配相反的值

Golang crypto/tls 内存泄漏

c# - 终结器和 IDisposable

c# - F# 分配给重载的 C# 属性

f# - F# 中的全局常量 - 如何

c# - F# 2.0 中的错误与泛型类型参数的约束在哪里有关?

f# - 更改异步工作流构建器以计算步骤?