c#中String\StringBuilder的异同有哪些?
1个回答
2013-09-08
展开全部
System.String和System.Text.StringBuilder都是对字符串的存储进行操作的,但是它们有本质的区别,下面我们以一个例子说明一下:
String str="hello every one";
str+="Thanks for your come";
表面上看是在原有的字符串后面又追加了个字符串,实际上不是的。而是创建了一个新的字符串,给它分配新的足够内存空间,以保存新的合并起来的它字符串。最初的字符串复制到这个新的字符串再加上现在的字符串,然后存储在变量str中的地址被更新了,使变量指向新的字符串。旧的字符串被撤消了引用,等垃圾回收。
System.Text.StringBuilder str=new System.Text.StringBuilder("hello every one",100);
System.Text.StringBuilder.Append("Thanks for your come");
它是在构造一个字符串的同时分配足够的内存来保存字符串,但是它通常分配的要比需要的更多。在这段代码中分配了100的初始容量,只有执行扩展字符串容量的操作,才会给字符串分配需要的新内存。String.Builder如果检测到容量超出,且该容量没有显示设置新值,就会使自己的容量翻倍。
希望结交编程同行一起探讨问题
String str="hello every one";
str+="Thanks for your come";
表面上看是在原有的字符串后面又追加了个字符串,实际上不是的。而是创建了一个新的字符串,给它分配新的足够内存空间,以保存新的合并起来的它字符串。最初的字符串复制到这个新的字符串再加上现在的字符串,然后存储在变量str中的地址被更新了,使变量指向新的字符串。旧的字符串被撤消了引用,等垃圾回收。
System.Text.StringBuilder str=new System.Text.StringBuilder("hello every one",100);
System.Text.StringBuilder.Append("Thanks for your come");
它是在构造一个字符串的同时分配足够的内存来保存字符串,但是它通常分配的要比需要的更多。在这段代码中分配了100的初始容量,只有执行扩展字符串容量的操作,才会给字符串分配需要的新内存。String.Builder如果检测到容量超出,且该容量没有显示设置新值,就会使自己的容量翻倍。
希望结交编程同行一起探讨问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询