gpt4 book ai didi

c# - 字符串连接是在内存中为链中的每个字符串分配新字符串,还是仅为被更改的字符串分配新字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:03 25 4
gpt4 key购买 nike

//will need these in a second
string a = "5";
string b = "7";
string c = "3";

所以因为C#会在内存中分配更多的字符串

string mystring = "";
mystring += a;
mystring += b;
mystring += c;

会比

StringBuilder sb = new StringBuilder();
sb.Append(a).Append(b).Append(c);

那么,怎么样:

string mystring = "";
mystring += a + b + c;

只是 += 部分变慢了,还是 + 也是这里的罪魁祸首?

最佳答案

这一行:

mystring += "5" + "7" + "3";

实际上会编译成:

mystring = String.Concat(mystring, "573");

当您连接文字字符串时,编译器会在编译时为您完成。

如果您改用字符串变量:

string mystring = "";
string str1 = "5";
string str2 = "7";
string str3 = "3";
mystring += str1 + str2 + str3;

最后一行将编译为:

mystring = String.Concat(myString, str1, str2, str3);

当您将所有字符串发送到 Concat 方法时,它可以一次性创建结果字符串。它的作用与使用 StringBuilder 创建字符串非常相似。

关于c# - 字符串连接是在内存中为链中的每个字符串分配新字符串,还是仅为被更改的字符串分配新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com