F# 析构函数的等效项

2023-12-20

我正在将一个将非托管库包装的 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() = ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F# 析构函数的等效项 的相关文章

  • Silverlight 如何确定程序集是“Silverlight”?

    我正在尝试从 F 编译代码以在 Silverlight 中使用 我编译 noframework cliroot C program Files Microsoft Silverlight 2 0 31005 0 standalone 这会生
  • F# 有异步验证库吗?

    我在代码中经常使用 asyncResult 但它会在第一个错误时退出 asyncResult let a allGood let b thisReturnsError let c neverExecuted 但有时我想执行所有函数并总结错误
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 与 F# List.nth 的参数顺序混淆

    List nth is T 列表 gt 整数 gt T 而不是标准int gt T 列表 gt T like Seq nth 这使得管道有些尴尬 难道幕后有什么事情吗 我不知道为什么 可能是为了ocaml兼容性 http www csc v
  • 如何搭建Windows Phone开发环境并使用F#开发应用程序?

    我已经下载了Windows Phone开发工具 但我不知道如何使用F 来开发应用程序 目前是C 将 F 和 Windows Phone 模板安装到 Visual Studio 中可以让生活变得更轻松 如果您打开 Visual Studio
  • 如何更改 Rx Builder 实现来修复堆栈溢出异常?

    我正在尝试提出一个 Rx Builder 以在 F 计算表达式语法中使用反应式扩展 我该如何修复它 以免堆栈崩溃 就像下面的 Seq 例子一样 是否有计划提供 RxBuilder 的实现作为响应式扩展的一部分或作为 NET Framewor
  • 如何在插件场景中实现程序集绑定重定向?

    我有一个plugin P延伸和application A NET40 我无法控制 P 程序集 NET40 有一个shared dependency D NET35 P和D都依赖于FSharp Core 但版本不同 P是针对FSharp Co
  • 在 IEnumerable 上使用 Seq 函数 [重复]

    这个问题在这里已经有答案了 我正在尝试在 IEnumerable 上应用 Seq 函数 更具体地说 它是System Windows Forms HtmlElementCollection它实现了ICollection and IEnume
  • 通用高阶函数

    当我将泛型函数作为本地值传递时 但在作为参数传递时却不能使用具有不同类型参数的泛型函数时 是否有原因 例如 let f id let g x y f x f y g 1 2 工作正常 但如果我尝试将函数作为参数传递 let g f x y
  • F# 在类型提供程序内的类型扩展函数中生成类型

    我有以下问题 在我的类型提供程序中 我需要使用一个返回此泛型类型实例的方法来扩展我之前定义的泛型类型 我的意思是 假设我们有 type receiveType lt a gt class val Next int val Type stri
  • 管道序列中的异常处理

    我正在开发一个基本的 2D CAD 引擎 管道操作符显着改进了我的代码 基本上 有几个函数从空间中的点 x y 开始 并在多次移动操作后计算最终位置 let finalPosition startingPosition gt moveByL
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • 使用 SqlBulkCopy 和 F# 在 SQL 中导出矩阵

    我想将大量数据从 F 传输到 SQL 表 基本上我的 F 代码创建了一个三列矩阵 UserID ProductID and price 和N行 我想将其 复制 粘贴 到数据库中 我尝试了多种选择 但最终 从 F 传输数据非常慢 10000
  • 该表达式的类型为 int,但此处与 unit 类型一起使用

    我试图在 F 中获得与此 vb net 代码完全相同的 非功能性的 Function FastPow ByVal num As Double ByVal exp As Integer As Double Dim res As Double
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 从 F# 调用 Newtonsoft.Json 出现意外结果

    我没有从该 F 代码中获得预期结果 我希望 t 包含调用 JsonSchema Parse json 的结果 但它是空的 我究竟做错了什么 open Newtonsoft Json open Newtonsoft Json Schema l
  • F# 中的数组初始化

    如何根据给定的记录类型在 F 中创建和初始化数组 假设我想创建一个包含 100 个 record1 记录的数组 e g type record1 value1 string value2 string let myArray Array i
  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • 使用 leftOuterJoin,不需要 .DefaultIfEmpty()

    的文档leftOuterJoin MSDN 上的查询表达式 http msdn microsoft com en us library hh225374 aspx通过样本反复暗示 当使用leftOuterJoin on into 你仍然必须
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示

随机推荐

  • 将直接 JS 转换为 JQuery

    我正在尝试从 last fm API 附加一些 JSON 数据 我一直在几个阶段使用alert 来验证API是否被正确解析 它是 这让我得出这样的结论 getElementById appendChild 不起作用 下面是我设置的测试页面的
  • Java优先级队列等待

    我正在尝试使用多线程解决 Java 中编写者偏好的读者 编写者问题 以下是我的代码的精简版本 它会起作用吗 public PriorityQueue
  • 用于定义给定重复模式的函数的球拍宏

    这个问题很难解释 因为我需要整理思绪 所以请耐心等待 为了说明目的 我已经能够将问题简化为最小的示例 这个例子对于它的用途没有任何意义 但我离题了 假设我想扩展球拍语言来编写如下所示的内容 define something a whatev
  • re.finditer 和 re.findall 之间的不同行为

    我正在使用以下代码 CARRIS REGEX r th d th th s w th th d d th th d m th pattern re compile CARRIS REGEX re UNICODE matches patter
  • iOS。 CLLocationManager 在 didUpdateLocations 中仅接收一次位置更新

    我有以下代码来获取位置更新 iOS 7 import UIKit import CoreLocation class FirstViewController UIViewController CLLocationManagerDelegat
  • 从文档中提取数据

    我有一个文本文件 其中的数据如下 07 30 07 45PMTS09526052 Sev9 Location Due 12 23 2016 NON PC HARDWARE TROUBLESHOOT SW Complete this Job
  • C++ 中什么被视为小对象?

    我读过 现代 C 设计 中有关小对象分配的内容 Andrei Alexandrescu 认为通用运算符 new 和 delete 在分配小对象时表现不佳 在我的程序中 有很多对象在免费商店中创建和销毁 这些对象的大小超过 8000 字节 什
  • 通过Emacs在代码注释中插入图片

    我的脑海里刚刚浮现出一个想法 有没有什么方法可以在代码注释中插入图片来帮助解释我们的代码 毕竟 一张图胜过一千个字 由于我使用Emacs 到目前为止Emacs有任何实现吗 看一眼iimage mode 这是在文本缓冲区中显示图像的标准解决方
  • 如何使用表达式树调用带有引用变量的方法

    我试图弄清楚如何创建一个调用具有引用参数的方法的表达式 让我用一个简单 但人为的 例子来解释我的问题 考虑方法 public static int TwiceTheInput int x return x 2 我可以创建一个表达式来通过执行
  • 如何告知呼叫者失败原因

    我有一个应该做某事的方法 返回值是一个布尔值 成功 失败 如果该方法失败 则有多种原因导致失败 调用者 用户界面层 可以使用这些原因向用户显示适当的消息 这样用户就可以解决问题 我正在考虑用适当的消息抛出异常 但失败原因是正常执行路径的一部
  • sp::CRS(SRS_string = "EPSG:24547") 中的错误:不适用

    我遇到与在 sp 包中分配 CRS 相关的问题 如果我运行 sp CRS SRS string EPSG 4326 sp CRS init epsg 4326 我分别得到这两个错误 sp CRS SRS string EPSG 4326 中
  • 使用javascript浏览服务器目录

    是否可以使用 Javascript 列出子文件夹中包含的所有文件 我有一堆图像也需要链接 但我希望它是动态的 因为列表会发生很大的变化 谢谢你 是否可以使用 Javascript 列出子文件夹中包含的所有文件 不 您通常会设置一个简单的服务
  • 如何在javascript中使用函数(1)(2)?它是如何运作的?

    我理解调用 function 1 但不理解 function 1 2 它是如何工作的 函数 1 2 3 4 也可以吗 在本例中 您假设 function 1 返回一个函数 而不是使用参数 2 调用这个新的匿名函数 看这个例子 functio
  • 为 Performance Point 仪表板设计器创建数据源时数据库不显示

    我设置了共享点服务器 仪表板运行良好 我的数据源也很棒 我正在尝试从不同的 SSAS 计算机添加新的数据源 当我输入服务器时 它甚至不会在数据库下拉列表中列出它 使用最初的 ssas 机器进行了此操作并使其正常工作 从我所看到的一切来看 新
  • Flex 容器的子容器的滚动宽度不正确

    根据w3学校 https www w3schools com jsref prop element scrollwidth asp The 滚动宽度 and 滚动高度属性返回元素的整个高度和宽度 包括不可见的高度和宽度 由于溢出 如果是这样
  • ES6/7 中可以导出 Arrow 函数吗?

    下面的导出语句出现语法错误 export default const hello gt console log say hello why 我只能导出命名函数 export function hello console log hello
  • 使用 html2pdf 时如何摆脱 css 中的左边距和上边距

    我正在使用 html2pdf 我想使用 css 去掉顶部和左边距 但我不能 在输出缓冲边距已设置为 0 之前 它适用于 html 但是当我使用它将其转换为 pdf 时html2pdf http html2pdf fr en default上
  • * 不支持的操作数类型:“numpy.ndarray”和“numpy.float64”

    长期读者 第一次作家 我在谷歌和堆栈溢出上进行了搜索 但并没有真正找到这个问题的一般答案 我在使用 numpy 1 6 2 的 python 2 7 3 中收到 numpy ndarray 和 numpy float64 不受支持的操作数类
  • 如何将网站封装在手机应用程序中?

    我见过很多手机应用程序只是打开一个网页而没有控件 只是页面 我正在寻找指导和链接来开始这样简单的事情 如果您想在 Android 中封装一个网站 您可以使用以下代码来实现 Roskvist https roskvist wordpress
  • F# 析构函数的等效项

    我正在将一个将非托管库包装的 C 类转换为 F 我遇到了重写随后的析构函数的看似简单的问题 class Wrapper P Invoke ellided private SomeType x public Wrapper x new Som