所以我碰到这个旅游F#的跑:https://docs.microsoft.com/en-us/dotnet/articles/fsharp/tourF#功能VS C# “功能” 蒸发散
...男孩你好是F#有趣!游览的最初阶段定义了一个示例函数,它看起来非常简单:
/// You use 'let' to define a function. This one accepts an integer argument and returns an integer.
/// Parentheses are optional for function arguments, except for when you use an explicit type annotation.
let sampleFunction1 x = x*x + 3
所以这对我有意义。它定义了功能是什么,所以如果我是通过一些数字到这个东西,它的广场,并增加了3到这一结果,通过巡视的下一行所见:
/// Apply the function, naming the function return result using 'let'.
/// The variable type is inferred from the function return type.
let result1 = sampleFunction1 4573
给这几个后思考更多的时间,我想出了C#可以做到这一点的结论!我确实很喜欢C#。这看起来像在C#上面有哪些,据我可以告诉:
Func<int, int> sampleFunction1 = x => x*x + 3;
var result = sampleFunction1(4573);
所以我的主要问题是,是什么之间我在C#写的什么F#的游向我展示了有什么区别?子问题是:即使它是相同的CLR,IL代码是否有任何不同?我将通过C#使用F#的几个原因是什么?
只因为编译器使用完全不同的语言,因此有不同的优化,解释,翻译等,IL可能会有所不同。您需要找到熟悉这两种语言的人,以确切地告诉您但是使用IL反汇编工具(如[ILSpy](http://ilspy.net/)),您可以轻松打开可执行文件/ DLL并自行探索。 – Abion47
你不会注意到一个班轮的功能有很大的不同。实际上,.NET BCL的许多调用在C#和F#中都会完全相同。但是,如果您构建更复杂的东西,您将从语法和结构的角度开始看到F#的优点。特别是如果你想要离开OO范例并减少项目中的可变(移动)部分。 – s952163