我最近问过question about designing API that are mostly based on interfaces and extension methods。
这让我想知道,是否有.NET语言不直接支持扩展方法,即使用这种API的语言会变得很痛苦?
我知道扩展方法只是静态方法,并且可能总是这样调用,但是“支持扩展方法”我的意思是更紧密地集成到语言的语法中来调用对象上的方法;扩展方法可以在C#中使用的方式,就像它们是常规方法一样。
除了C#和VB.NET之外,哪种更流行的.NET语言实际上支持扩展方法,哪些不支持?
答案 0 :(得分:3)
F#支持最新版本中的扩展方法(例如VS2010附带的版本)。 另请参阅this answer问题“使用F#代码中的C#中定义的扩展方法”。
PowerShell can be made to sort of support extension methods。
IronPython 似乎支持扩展方法...
clr.importExtensions()
starting with version 2.7。 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所示。
(请随意扩展并改进此答案!)