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


    1.String和StringBuilder区别

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

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

    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();
       }
    }
    
    
    
    
    
  • 相关阅读:
    senrty 配置Email
    pip安装使用详解
    C_FORCE_ROOT linux环境变量设置
    Supervisord管理
    解决外部机器通过VM内ubuntu IP 无法访问vm内web服务的问题
    C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名
    godaddy.com 注册域名 买卖域名
    vue-15-vuex-store的用法
    vue-14-less 语法的使用
    vue-13-swiper组件的使用
  • 原文地址:https://www.cnblogs.com/mengxiangzhi/p/8660514.html
Copyright © 2020-2023  润新知