当前位置:  开发笔记 > 编程语言 > 正文

.NET中的互操作性受损?

如何解决《.NET中的互操作性受损?》经验,为你挑选了1个好方法。

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

根据语言规范,第10.7节"类型扩展":

可选的扩展成员是静态成员的语法糖.可选扩展成员的使用精心调用具有编码名称的静态成员,其中对象作为第一个参数传递.此版本的F#中未指定名称编码,并且与C#扩展成员的C#编码不兼容.

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



1> Brian..:

我希望有很多东西,但是如果你在谈论主要的托管语言(C#,VB,很快就是F#),大多数都是在极端情况下.F#当前与C#交互性差的其他情况是当存在同时采用Action和Func的方法重载时(C#重载决策的工作方式与F#不同,因此对这种API的F#调用可能更加冗长); 'params'参数数组(特别是当试图利用'数组协方差'时,这是C#的一个特征而不是F#的特征); 关于子类化或实现接口有一些问题,结合可访问性(例如公共与内部),有时你无法从C#中派生出一个F#类......

其中许多问题只是F#CTP编译器中的"错误"或F#语言规范的"设计问题",可能会在F#的最终版本发布之前发生变化.

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

总的来说,我认为所有这些都是次要的,在F#的情况下,它会在最终版本之前被"修复".但我很想知道人们会提到的其他内容,因为它可能对MS的托管语言团队有用.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有