使用“+”运算符的string连接
看看string类的元数据,我只看到运算符==和!=重载。 那么它怎么能够为“ + ”运算符执行连接呢? 
编辑 :
Eric Lippert关于string连接的一些有趣的注释:
第1部分
第2部分
还有一篇来自Joel的超级文章,在第2部分中提到( http://www.joelonsoftware.com/articles/fog0000000319.html )
它不 – C#编译器:)
所以这个代码:
 string x = "hello"; string y = "there"; string z = "chaps"; string all = x + y + z; 
实际上被编译为:
 string x = "hello"; string y = "there"; string z = "chaps"; string all = string.Concat(x, y, z); 
(Gah – 介入编辑意外地删除了其他位)
  C#编译器注意到在这里有多个string连接的好处是,你不会最终创build一个x + y的中间string,然后需要作为(x + y)和z 。 相反,我们把这一切都做完了。 
编辑:请注意,编译器不能做任何事情,如果你在一个循环连接。 例如,这个代码:
 string x = ""; foreach (string y in strings) { x += y; } 
只是最终相当于:
 string x = ""; foreach (string y in strings) { x = string.Concat(x, y); } 
  …所以这会产生很多垃圾,这就是为什么你应该使用StringBuilder来处理这种情况。 我有一篇关于这两个更详细的文章 ,希望能够回答更多的问题。