c# - .NET 中的互操作性受损?

标签 c# .net interop f#

最近我在这里问了一个关于在 C# 中使用 F# 扩展的问题。布赖恩引用:

Per the language spec, section 10.7 "Type extensions":

Optional extension members are syntactic sugar for static members. Uses of optional extension members elaborate to calls to static members with encoded names where the object is passed as the first argument. The encoding of names is not specified in this release of F# and is not compatible with C# encodings of C# extension members.

我想知道 .NET 中是否存在任何其他互操作性问题,这些问题将某些功能的使用限制在某些语言而不是其他语言?

最佳答案

我希望有很多东西,但如果您谈论的是主要的托管语言(C#、VB 和即将推出的 F#),则主要是在极端情况下。当前 F# 与 C# 交互不佳的其他情况是存在同时采用 Action 和 Func 的方法重载(C# 重载解析的工作方式与 F# 不同,因此 F# 对此类 API 的调用可能更冗长); “params”参数数组(尤其是在尝试利用“数组协方差”时,这是 C# 而不是 F# 的特性);在子类化或实现接口(interface)方面存在一些问题,结合可访问性(例如公共(public)与内部),有时您无法从 C# 类派生 F# 类...

其中许多问题要么是 F# CTP 编译器中的“错误”,要么是 F# 语言规范的“设计问题”,可能会在 F# 的最终版本之前更改。

我不太了解 CLR 的尘土飞扬的角落,但我敢打赌,有些地方 C# 和 VB 无法融合。 CLR 有一些主要语言都没有使用的功能,所以我希望有一些方法可以创建有效的 IL,这可能会导致某些互操作出现问题。

总的来说,我认为所有这些都是次要的,就 F# 而言,其中一些会在最终版本之前“修复”。但我很想知道人们还提出了什么其他意见,因为这可能是对 MS 的托管语言团队有用的反馈。

关于c# - .NET 中的互操作性受损?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/714960/

相关文章:

c# - 如何将 Silverlight OOB 附加到 Winforms 面板?

.net - 在Log4net中使用包装器类时如何记录方法名称

Excel开发: How to detect that a Range overlaps another Range?

c# - 需要有关如何从 .docx/.doc 文件中提取数据然后将数据提取到 SQL Server 中的建议

c# - 在 sql server 中存储字母数字(如 pan 卡、选民 ID)的首选数据类型是什么?

c# - 如何从 .dll 访问应用程序配置?

c# - WPF 表单与后台线程锁定

.net - 唤醒 Windows 服务中运行的 WCF 服务

c# - 使用受限执行区域

c# - QuickBooks: Unresolved SDK 引用?