string与stringbuilder的区别在于当拼接的字符串比较长的时候用stringbuilder效率高
如:string a=“123”;
string b="456";
string a=a+b;此时会把a和b的内容加载到内存,并创建一个新的字符串来进行拼接,但是stringbuilder则是
stringbuilder a="123";
string b="456";
a.Append(b)则是直接在a字符串的内容后面加上b,在原来的基础上拼接,而string是新创建了一个字符串
当拼接的字符串很小时差别不大,但是拼接的字符串很大时,则就不是一个数量级了
如果是要拼比较长的字符串,当然是StringBuilder好点。。。
StringBuilder的性能要好。
string属于引用类型,但实际使用上却是类似于值类型。
监控代码运行时间的类是System.Diagnostics.Stopwatch。
string使用上也是引用类型。
@水牛刀刀: 我指的是在实际使用上类似值类型
@笨笨蜗牛: 也没有类似值类型啊。举个例子看看。
@水牛刀刀: 使用上难道不是类似值类型?当你把值放到一个变量的时候,按照引用类型,应该只是地址的变化而已,实际上呢?
比如一个类:
Person p1 = new Person();
p1.Name = "My Name is P1";
Person p2 = p1;
p2.Name = "My Name is P2";
//此时p1的Name属性值也会改。
但反过来,用在string上的时候,会有这个变化吗?我指的类似值类型也就是这几个方面。甚至在使用者的角度触发,完全可以把string类型当作值类型来看待(目前发现除了不能定义string?意外)
@笨笨蜗牛: “用在string上的时候,会有这个变化吗”,你怎么用在string上?string没有可写的实例属性。因此不能证明啊。
@水牛刀刀: 如果一定要较真。。。那就。。。不过是一个见仁见智的问题。我只是说在使用上类似值类型而已!
@笨笨蜗牛: 事实上使用上没有类似啊,举不出任何例子。
多次拼接字符串的话stringbuilder好,我记得曾经在面试题上看到过这个,主要是string拼接字符串的话好像是要另外开辟一个空间的,stringbuilder是在原空间上搞的,大致好像是这样 所以对字符串操作次数多的话stringbuilder比较好
在多拼接字符,不知道拼接次数的时候最好用stringbuilder
这2种根据情况来定吧!