我通过反射器查看String和Int32类型,但找不到任何已定义的运算符.
如果它们没有定义,那么/ – 等对这些类型如何工作?
解决方法
数字运算符是IL本身的一部分.字符串上的“”运算符有点特殊 – 它不会被字符串类型本身重载,它由编译器完成. C#编译器翻译:
string x = a + "hello" + b;
成:
string x = string.Concat(a,"hello",b);
这比使用普通运算符进行连接更有效,因为否则必须在每个连接处创建新字符串.