最近我在这里问了一个关于在c中使用f扩展的问题。布莱恩引用:
根据语言规范第10.7节“类型扩展”:
可选的扩展成员是静态成员的语法糖。使用可选的扩展成员精心设计来调用具有编码名称的静态成员,其中对象作为第一个参数传递。此版本的f中未指定名称的编码,并且与c扩展成员的c编码不兼容。
我想知道.NET中是否还有其他互操作性问题限制了某些语言而不是其他语言使用某些功能?
最佳答案
我希望有很多东西,但是如果你在谈论主要的托管语言(c,vb,很快f)的话,大多数都是在角落里。其他f目前与c交互不好的情况是,当同时执行action和func的方法重载时(c重载解析的工作方式不同于f重载,因此f对这样一个api的调用可能更详细);“params”参数数组(特别是当试图利用c而不是f的特性“数组协方差”时);关于子类化或实现接口,结合可访问性(例如公共接口和内部接口)存在一些问题,有时您无法从C类派生F类…
这些问题中的许多要么是f ctp编译器中的“错误”,要么是f语言规范中的“设计问题”,这些问题可能在f的最终版本之前更改。
我不太了解CLR的灰尘角落,但我敢打赌,在某些地方C和VB无法实现网格化。而且clr有一些主要语言都不使用的特性,所以我希望有办法创建有效的il,这可能会导致一些互操作问题。
总的来说,我认为所有这些东西都是次要的,在f_的情况下,在最终发布之前会有一点“修复”。但我很想知道人们会说些什么,因为这对微软的托管语言团队来说可能是有用的反馈。