是否有可能获得C#运算符背后的功能? 例如在F#中你可以做
let add = (+);;
val add : (int -> int -> int)
c#可以做这样的事情:
Func<int, int, int> add = (+);
或
Func<int, int, int> add = Int32.(+)
答案 0 :(得分:5)
您可以使用lambda表达式:
Func<int, int, int> func = (val1, val2) => val1 + val2;
答案 1 :(得分:3)
这是一种间接的方式来做你想做的事情:
Func<int, int, int> add = (int a, int b) => a + b;
当反映出来时,可以看出F#不会直接访问Int32.operator+
(这可能是不可能的),但是上面的C#代码只是使用内部委托类型({{1} })。
答案 2 :(得分:0)
要添加到其他答案,int
s的添加是由CIL add
指令完成的,而不是方法调用,因此没有任何意义可以使用获得'实际的MethodInfo
'。