1、 字符串的恒定性
string对象一经创建,它对应的字符序列无法改变(在托管的环境下)
e.g.
string a = ‘str_1’;
string b = a;
a = “str_2”;
console.write(a); //str_2
初看来,string似乎有值类型的特性,但实际上是又创建了一个字符串“str_2”,变量a的指针指向这个新的字符串。
2、 字符串的驻留性
clr对string的创建实行驻留机制,clr只会维护具有不同字符串序列的string。即,在程序中使用到具有完全相同字符串序列的string均对应的是同一个string对象,是对同一段内存的引用。不仅仅是基于某个单独的appDomain,而是针对整个进程。
e.g.
string a = “str_1”;
string b = “str_1”;
response.write(RefrenceEquals(a, b));//true
3、 string 和 String
String 的全称是System.String。在底层,两种方式没有区别,不同的是string类似于基元类型,String是框架类库的基本类型
4、 StringBuilder与string
StringBuilder维护的是一个字符串数组,实际上可以理解成一个字符串,而不是全部再重新新建一段内存。字符串累加时,最好使用这种方式。