[int,float,double]中的op_addition在哪里

时间:2012-06-22 11:37:01

标签: 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,找不到这些方法(op_Addition)。

那么如何构建一般的添加方法呢?

1 个答案:

答案 0 :(得分:8)

是的,它们不是像这样的成员存在的自定义运算符 - 而是有内置的IL指令。

(对于字符串连接,几乎为true,除非C#编译器构建对string.Concat的调用。)

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

public dynamic Addition(dynamic x, dynamic y)
{
    return x + y;
}

对于早期版本,您需要特殊情况下某些类型:(

目前尚不清楚你的背景是什么,但你可能会发现Marc Gravell的article on generic operators很有意思。