5

在 F# 中,为二元运算符声明中缀运算符并不少见。但是如果我们尝试在 C# 中使用它们,它们是如何表示的?因为在 C# 中无法声明中缀运算符?

玩具示例

let ( .|. ) a b = a + b
4

1 回答 1

9

如果您检查操作员的 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 结束。

于 2020-12-10T12:15:24.273 回答