在 F# 中,为二元运算符声明中缀运算符并不少见。但是如果我们尝试在 C# 中使用它们,它们是如何表示的?因为在 C# 中无法声明中缀运算符?
玩具示例
let ( .|. ) a b = a + b
在 F# 中,为二元运算符声明中缀运算符并不少见。但是如果我们尝试在 C# 中使用它们,它们是如何表示的?因为在 C# 中无法声明中缀运算符?
玩具示例
let ( .|. ) a b = a + b
如果您检查操作员的 IL 表示,您将看到:
.method public static specialname int32
op_DotBarDot(
int32 a,
int32 b
) cil managed
不幸的是,您将无法从C#
. 但是,您可以添加一个属性:
[<CompiledName("addop")>]
let ( .|. ) a b = a + b
然后您可以从 C# 引用您的 F# dll 并通过以下方式调用它addop
:
Console.WriteLine(global::Program.addop(1,2));
3
进程以退出代码 0 结束。