在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。