Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 您能否定义与C#兼容的无命名空间扩展方法?_F#_C# To F# - Fatal编程技术网

F# 您能否定义与C#兼容的无命名空间扩展方法?

F# 您能否定义与C#兼容的无命名空间扩展方法?,f#,c#-to-f#,F#,C# To F#,我知道您可以在c#中定义空命名空间扩展方法,您可以在F#中定义相同的方法供c#使用吗?我遵循了general post获得与C#兼容的扩展方法,但我没有找到1-1转换的最后一步 这不是重复的,我在寻找一种方法来定义C所关心的全局命名空间中的扩展方法,而不是C所能看到的如何在F中定义常规扩展方法。你肯定可以在F中创建这样的扩展方法。这可以通过利用在任何名称空间之外声明的F#模块进入该默认名称空间的特性来实现,如下代码段所示: // Tested under Visual Studio 2013 P

我知道您可以在c#中定义空命名空间扩展方法,您可以在F#中定义相同的方法供c#使用吗?我遵循了general post获得与C#兼容的扩展方法,但我没有找到1-1转换的最后一步

这不是重复的,我在寻找一种方法来定义C所关心的全局命名空间中的扩展方法,而不是C所能看到的如何在F中定义常规扩展方法。

你肯定可以在F中创建这样的扩展方法。这可以通过利用在任何名称空间之外声明的F#模块进入该默认名称空间的特性来实现,如下代码段所示:

// Tested under Visual Studio 2013 Premium/F# 3.1:

// F# library module
[<System.Runtime.CompilerServices.Extension>]
module Extension
    [<System.Runtime.CompilerServices.Extension>]
    let Superb(s: System.String) = "Superb!!!"
可能的副本这是的副本。如果你问在F#中定义的相同扩展方法在C#中是否可见,答案是肯定的否。语言处理扩展的方式完全不同。
// Use extension method on System.String from C# console app:
class Test
{
    static void Main(string[] args)
    {
        System.Console.WriteLine("abc".Superb());
    }
}