哪种.NET语言对扩展方法有语法支持?

时间:2012-07-17 21:14:29

标签: .net extension-methods

我最近问过question about designing API that are mostly based on interfaces and extension methods

这让我想知道,是否有.NET语言不直接支持扩展方法,即使用这种API的语言会变得很痛苦?

我知道扩展方法只是静态方法,并且可能总是这样调用,但是“支持扩展方法”我的意思是更紧密地集成到语言的语法中来调用对象上的方法;扩展方法可以在C#中使用的方式,就像它们是常规方法一样。

除了C#和VB.NET之外,哪种更流行的.NET语言实际上支持扩展方法,哪些不支持?

1 个答案:

答案 0 :(得分:3)

F#支持最新版本中的扩展方法(例如VS2010附带的版本)。  另请参阅this answer问题“使用F#代码中的C#中定义的扩展方法”。


通过扩展类型系统

PowerShell can be made to sort of support extension methods


IronPython 似乎支持扩展方法...


IronRuby according to this answer问题,“IronRuby调用C#扩展方法 - 错误 - .NET 3.5中的兼容性”,支持从1.4版开始的扩展方法(需要.NET 4) )通过using_clr_extensions


IronScheme does have extension methods,但我不完全确定它们是否与C#3中的扩展方法相同。


Boo ,根据this answer的问题“如何在boo中使用扩展方法”,支持从0.9.0版本开始的扩展方法。


Nemerle 似乎也支持扩展方法(根据a page on its website)。


托管C ++ :( 扩展stakx的答案)托管C ++支持扩展方法,如this answer所示。


  

(请随意扩展并改进此答案!)