C#中的F#中缀运算符?
c#
f#
在 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。