你知道的string和你不知道的string

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维护的是一个字符串数组,实际上可以理解成一个字符串,而不是全部再重新新建一段内存。字符串累加时,最好使用这种方式。

原文地址:https://www.cnblogs.com/smallidea/p/2695490.html