C# 中的 F# 中缀运算符?

kam*_*kam 5 c# f# infix-operator

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

玩具示例

let ( .|. ) a b = a + b
Run Code Online (Sandbox Code Playgroud)

s95*_*163 9

如果您检查操作员的 IL 表示,您将看到:

 .method public static specialname int32
    op_DotBarDot(
      int32 a,
      int32 b
    ) cil managed
Run Code Online (Sandbox Code Playgroud)

不幸的是,您将无法从C#. 但是,您可以添加一个属性:

[<CompiledName("addop")>]
let ( .|. ) a b = a + b
Run Code Online (Sandbox Code Playgroud)

然后你可以从 C# 引用你的 F# dll 并通过addop以下方式调用它:

Console.WriteLine(global::Program.addop(1,2));

3

进程已完成,退出代码为 0。