为什么VS2010对象浏览器中的F#语句中的"printfn"语句不同?

dag*_*lee 1 f# function-call

当我调用它们的函数时,我已经知道了F#库和.NET库之间的区别.但是当我在VS 2010对象浏览器中看到语句"printfn"时,我只看到了"public static T PrintFormatLine(... format)"而不是"printfn".

为什么在VS2010对象浏览器中F#库中的语句"printfn"名称不同?

如果没有F#库的文档,如何调用F#库中的函数,因为VS 2010对象浏览器中的名称完全不同?

Tom*_*cek 6

printfnF#核心库中的函数使用特殊属性进行批注,该属性CompiledName以编译形式指定函数的名称:

[<CompiledName("PrintFormatLine")>]
let printfn fp = ...
Run Code Online (Sandbox Code Playgroud)

这有什么用?我认为动机是FSharp.Core.dll库应遵循通常的.NET命名准则.但是,F#命名准则略有不同(允许使用小写名称等),因此该属性用于使库看起来更像普通的.NET库.

我不认为这是F#用户自己使用的东西.如果您正在编写将从C#中使用的代码,请以C#友好样式编写它,如果您正在编写将从F#中使用的代码,请遵循F#命名准则.

  • @dagelee:文档确实称之为`printfn`:http://msdn.microsoft.com/en-us/library/ee370571.aspx (2认同)