添加到字符串字段中

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)

这是面试问题.

Sud*_*udi 5

实际上你的代码没有问题.

在这种情况下StringBuilderstring.

因为StringBuilder是可变的,而stringimmutable.

因此,每当使用+=它修改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)