【C# 知识点】String和StringBuilder的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MadBam_boo/article/details/79831272

参考资料:
 -《C#从入门到精通(第四版)》清华大学出版社
 - 资料来源-木土家的田童:C# String与string的区别

啊啊啊 之前一直不知道还有这回事,翻了一下书才发现。优化也很重要,,,
正题:
 在C#中,String对象是不可变的,每次对String对象进行改变时,都会创建一个新的String对象同时会对这个对象分配新的空间。想想以前那种在for循环里面不断使用str += “xxx”之类的操作,突然就觉得很恐怖。
 因此,如果要对一个字符串不断修改的话,使用StringBuilder会更好,更节省系统开销。先介绍几个StringBuilder对象常用的方法:
 Append  追加字符串到对象末尾
 AppendFormat  自定义变量格式并将结果追加到对象末尾
 Insert  添加字符串到对象指定位置
 Remove  从对象中一处指定数量字符
 Replace  替换对象内的字符

 那这个节省到底有多省?测试代码走一波~

using System;
using System.Text;      // StringBuilder exist in System.Text, remember to using it.

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            long startTime = 0;
            long endTime = 0;
            string str = string.Empty;
            StringBuilder strBuilder = new StringBuilder();

            // string test.
            startTime = DateTime.Now.Millisecond;
            for (int i = 0; i < 10000; i++)
            {
                str += i.ToString();
            }
            endTime = DateTime.Now.Millisecond;
            Console.WriteLine("string's time cost: " + (endTime - startTime));

            // StringBuilder test.
            startTime = DateTime.Now.Millisecond;
            for (int i = 0; i < 10000; i++)
            {
                strBuilder.Append(i.ToString());
            }
            endTime = DateTime.Now.Millisecond;
            Console.WriteLine("StringBuilder's time cost: " + (endTime - startTime));

            Console.ReadKey();



        }
    }
}

 测试结果:
 string’s time cost: 90
 StringBuilder’s time cost: 2

 em… 体会一下…

 顺带来一波String和string的区别:
 资料来源-木土家的田童:C# String与string的区别
  string是C#中的类,而String是.net Framework中的类,如果我们使用string,编译器会自动把它变为String类。
  如果使用C#,建议使用string会比较符合规范。

你看看,基础功不扎实就这下场。

展开阅读全文

没有更多推荐了,返回首页