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的性能要好得多。