Is it possible to obtain the function behind a C# operator? For example in F# you can do
let add = (+);;
val add : (int -&开发者_开发百科gt; int -> int)
Is it possible in c# to do something like this:
Func<int, int, int> add = (+);
or
Func<int, int, int> add = Int32.(+)
?
You can use lambda expressions:
Func<int, int, int> func = (val1, val2) => val1 + val2;
Here's an indirect way to do what you want:
Func<int, int, int> add = (int a, int b) => a + b;
When reflected, it can be seen that F# doesn't access the Int32.operator+
directly either (that's probably impossible), but does something like the C# code above just using an internal delegate type instead (Microsoft.FSharp.Core.FastFunc
).
To add to the other answers, addition of int
s is done by the CIL add
instruction, rather than a method call, so there isn't any sense in which it would be possible to acquire 'the actual MethodInfo
'.
精彩评论