C#面试题(String和StringBuilder区别)

1.String和StringBuilder区别java

这是java面试题吗?第一次遇到这种面试题,查阅了一下MSDN,以下。面试

String字符串是不可变,执行的字符串操做例程重复添加或删除操做到看起来是单个字符串能够精确显著的性能损失。 例如,下面的代码使用的随机数生成器使用 1000年个字符,范围从 0x0001 到 0x052F 中建立一个字符串。 尽管代码会使用字符串串联以将新字符追加到名为的现有字符串str,它实际建立一个新String为每一个串联操做的对象。dom

using System; using System.IO; using System.Text; public class Example { public static void Main() { Random rnd = new Random(); string str = String.Empty; StreamWriter sw = new StreamWriter(@".\StringFile.txt", false, Encoding.Unicode); for (int ctr = 0; ctr <= 1000; ctr++) { str += Convert.ToChar(rnd.Next(1, 0x0530)); if (str.Length % 60 == 0) str += Environment.NewLine; } sw.Write(str); sw.Close(); } }

 

你可使用StringBuilder类而不是String类用于对字符串的值进行多个更改的操做。 与实例的不一样String类,StringBuilder是可变的对象; 当你链接、 追加或删除从字符串的子字符串,在单个字符串上执行的操做。 完成后修改的值StringBuilder对象,能够调用其StringBuilder.ToString方法将其转换为字符串。 下面的示例替换String在前面的示例可用于链接到从 0x0001 到与 0x052F 的范围内的 1000 个随机字符StringBuilder对象。性能

 
      
using System; using System.IO; using System.Text; public class Example { public static void Main() { Random rnd = new Random(); StringBuilder sb = new StringBuilder(); StreamWriter sw = new StreamWriter(@".\StringFile.txt", false, Encoding.Unicode); for (int ctr = 0; ctr <= 1000; ctr++) { sb.Append(Convert.ToChar(rnd.Next(1, 0x0530))); if (sb.Length % 60 == 0) sb.AppendLine(); } sw.Write(sb.ToString()); sw.Close(); } }
相关文章
相关标签/搜索