System.String直接继承于System.Object,所以它绝对是一个引用类型。但是——
它有昵称,叫string,也许是为了配合STL中的string吧。
创建一个string对象也不用new,直接赋值就可以了 string str=”123”;
string的比对跟值类型相似,是按内容比对,而不是按地址比对。如果两个string都是 "A"那他们就是相等的。
不管怎么说string还是很好用的。它有我们熟悉的转义符,它有简单的+操作进行字符串连接,它有Length属性反映字符个数,还可以通过Split()方法进行切割。
除了多出一些好用的函数,还有两个地方是C++程序员不熟悉的。
1)@符号可以用在字符串前面,代表转义符失效。
平时我们写C++字符串会这样:
char str[] = "c:\\MyApp\\bin\\debug";
而现在,我们只需要这样:
string str=@"c:\MyApp\bin\debug";
string s = "123";
s = s + "456";
的时候,系统并不是会原来s对象后面增加了123这个字符串,string是不能被改变的,还记得么。
string s="123"; s = s+"345"; s = s+"456"; s = s+"567";
...
现在,我们的堆里面会有很多string的内存存在,等着被其他人 “delete”的时候才能够被释放。这样也太浪费了吧。
确实如此,如果需要对字符串进行修改操作的时候,我们并不推荐用string这个对象,而是用System.Text.StringBuilder。StringBuilder的内容是可以跟着改变的,这样就避免了刚才的问题。
现在来更正一下前面的代码吧
StringBuilder sb= new StringBuilder("123");
sb.Append("345");
sb.Append("456");
...