Ale*_*ksP 2 c# string format stringbuilder tostring
告诉我这个代码C#有什么问题.
string str = string.Empty;
for (var i = 1; i <= 1000; i++)
str += i.ToString();
Run Code Online (Sandbox Code Playgroud)
这是面试问题.
实际上你的代码没有问题.
在这种情况下StringBuilder
比string
.
因为StringBuilder
是可变的,而string
为immutable
.
因此,每当使用+=
它修改String对象时,都会创建一个新string
对象,因此在循环结束时会创建许多字符串对象.
但是如果你使用StringBuilder
:每次附加Strings
到它时都会修改相同的对象.
您可以从MSDN:StringBuilder类中找到更多信息
String对象是不可变的.每次使用System.String类中的某个方法时,都会在内存中创建一个新的字符串对象,这需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新String对象相关的开销可能很高.如果要在不创建新对象的情况下修改字符串,可以使用System.Text.StringBuilder类.例如,使用StringBuilder类可以在循环中将多个字符串连接在一起时提高性能.
方案:
这个
string str = string.Empty;
for (var i = 1; i <= 1000; i++)
str += i.ToString();
Run Code Online (Sandbox Code Playgroud)
应该这样
StringBuilder str =new StringBuilder();
for (var i = 1; i <= 1000; i++)
str.Append(i.ToString());
Run Code Online (Sandbox Code Playgroud)