使用'+'运算符的字符串连接

string查看类元数据时,我只看到运算符==!=重载。那么如何为’ +‘运算符执行级联呢?

Eric Lippert关于字符串连接的一些有趣的注释:

第1部分

第2部分

第2部分还提到了Joel的一篇超级文章(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#编译器注意到这里有多个字符串串联的好处是,您不必最终创建一个中间字符串x + y,然后将其作为(x + y)and

串联的一部分再次复制z。相反,我们一次性完成了所有工作。

编辑:请注意,如果您在循环中串联,编译器 将无法 执行任何操作。例如,此代码:

string x = "";

foreach (string y in strings)

{

x += y;

}

最终等同于:

string x = "";

foreach (string y in strings)

{

x = string.Concat(x, y);

}

…因此 确实会

产生大量垃圾,这就是为什么StringBuilder在这种情况下应使用a的原因。我有一篇文章将详细介绍这两者,希望能回答更多问题。

以上是 使用'+'运算符的字符串连接 的全部内容, 来源链接: utcz.com/qa/411989.html

回到顶部