滥用模式匹配

Abusing pattern matching

我来自 C#,发现自己爱上了 F# 模式匹配语法,因为它比 C# switch 更简单,而且更有用。我喜欢尽可能多地使用它,像这个例子那样以奇怪的方式使用它是否有性能或任何其他缺点?

match 0 with
|_ when a<b -> a
|_ -> b

在此特定示例中,不会有性能损失。在其他情况下也很可能不会出现性能损失,但要绝对确保您必须使用 ILSpy 之类的工具查看生成的代码。

我还必须补充一点,当您使用 F# 时,您会发现 if/then/else 也非常好。在C#中,if/else感觉有点尴尬,因为它不能用作表达式,但在F#中不是这样,所以尴尬很快就消失了。

   let x = if a < b then a else b

它甚至读起来像简单的英语! :-)