C# 其中是[int,float,double]中的op_加法

C# 其中是[int,float,double]中的op_加法,c#,C#,虚拟代码: public object Addition(object a, object b) { var type = a.GetType(); var op = type.GetMethod("op_Addition", BindingFlags.Static | BindingFlags.Public); return op.Invoke(null, new object[] { a, b }); } 此方法使用int/float/double,无法找到这些方法

虚拟代码:

public object Addition(object a, object b)
{
    var type = a.GetType();
    var op = type.GetMethod("op_Addition", BindingFlags.Static | BindingFlags.Public);
    return op.Invoke(null, new object[] { a, b });
}
此方法使用int/float/double,无法找到这些方法(op_加法)


那么如何构建一个通用的加法呢?

是的,它们不是作为成员存在的自定义运算符,而是内置的IL指令

(字符串连接几乎也是如此,只是C编译器在这里构建了对
string.Concat
的调用)

如果您使用的是C#4和.NET 4,最简单的方法是使用动态类型:

public dynamic Addition(dynamic x, dynamic y)
{
    return x + y;
}
对于早期版本,您需要对某些类型进行特殊处理:(


不清楚您的上下文是什么,但您可能会发现Marc Gravell很有趣。

如果您有.net 4可用,您可以使用
dynamic
。谢谢@jon,我使用的是mono版本,我想我应该先使用[int,double]来浮动这些类型。