如何在C#中获得特定运算符的功能?

时间:2010-03-19 10:11:08

标签: c# function f# operator-overloading

是否有可能获得C#运算符背后的功能? 例如在F#中你可以做

let add = (+);;

val add : (int -> int -> int)

c#可以做这样的事情:

Func<int, int, int> add = (+);

Func<int, int, int> add = Int32.(+)

3 个答案:

答案 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'。