我想问c#的String类到底重没重载“+”运算符,
我看到的refltor里面没有“+”的重载,那字符串之间的连接
从而生成新的字符串,以及字符串与整形间的“+”,是怎么得到结果的?

解决方案 »

  1.   

    String比较特殊,比如创建一个String对象不是用newobj而是用ldstr。
    编译器理解这个加号,并把它解释为System.String::Concat如果是string str = "hell" + " world"; 编译器甚至直接优化为
    ldstr "hell world"
      

  2.   

    你自己写个字符串连接测试然后用ildasm查看就知道了,一楼说的对
      

  3.   

    已经重载了
    就是字符串的连接
    cat
      

  4.   

    楼上这么多说已经重载了,
    请问有代码吗?可否帖一下?谢谢
    仔细想想那为什么编译器会把相加认为是contact?按理说还是应该是重载的结果吧,
    可解析没有“+”的重载啊
      

  5.   

    根本不需要重载,因为 CLR 已经支持字符连接操作。string 只重载了 == 和 != 两个操作符