C# string与StringBuilder

System.String   引用类型

基本成员

Length  返回字符串的长度。

Contains()  判断当前字符串对象是否包含一个指定的字符串对象。

Insert()  用来接收新插入字符串数据后的当前的字符串的副本。(string的“副本“特点)

Remove()/Replace()  接收一个带有修改(被删除或替换的字符)了的字符串的副本。

Substring()  返回当前字符串的子字符串。

ToCharArray()  返回一个表示当前字符串的资附数组。

ToUpper()/ToLower()  创建当前字符串的大小写副本。

Format()  格式化一个字符串的字面量。

String的相等性运算(==和!=)比较的是字符串对象的值,而非比较者所引用的内存。

拼接操作:+或静态的System.Concat()方法。

索引器访问字符串:

(1)String str="123456";

for(int i=0;k<str.Length;i++)

Console.WriteLine("Char {0} is {1}",i,str);

(2)System.String中维护者也个System.Char类型的数组--〉

String str="123456";

foreach(char c in str)  Console.WriteLine(c);

System.Text.StringBuilder:

StringBuilder提供了对底层缓冲区的直接访问。与System.String一样,System.Text.Builder提供了用来从对象中追加,格式化,插入和删除数据的大量成员。

区别

String的功能已经使得他在处理字符类类型上面应经很完美了。但是在创建大量使用文本数据的程序时,它的效率就显得低了些。原因就是:当优点太优了的时候,从另一方面看时可能也会是缺点(牺牲其它方面)。--〉.NET字符串的一个非常重要的事实,字符串一旦建立,它的值就将不可再被修改。表面上我们可以给字符串变量任意赋新值,但实际上并没有修改已存在的字符串对象的底层缓存区,而是字符串变量(引用型)指向了新的字符串对象,原先的字符串最终将被垃圾回收掉。字符串的拼接,转换大小写等于此情况类似,

StringBuilder:解决了String重复开辟空间对资源的浪费。它提供了对底层缓冲区的直接访问。长度是可变的。创建对象的同时可以指定对象所包含的字符串的初始个数,默认情况容量16。缓冲区会在初始容量不足时实时的调整大小。

总:在许多情况下,应选择System.String表示文本,对多数应用程序来说,可以忽略返回一个修改的字符数据的副本的开销。但是,若创建的是一个文本密集的应用程序(如一个字符处理程序),使用System.Text.StringBuilder的性能要好得多。

原文地址:https://www.cnblogs.com/skyshenwei/p/1651869.html