目录
特殊的引用类型
- 当有多个字符串变量包含了同样的字符串实际值时,CLR可能不会为它们重复的分配内存,而是让它 们通通指向同一个字符串对象实例。
- CLR这样去管理String类的内存分配,可以优化内存的使用情况,避免内存中包含冗余的数据。
- 为了实现这个机制,CLR维护了一个叫做驻留池的表。这个表记录了所有在代码中使用字面量声明的 字符串实例的引用。
不变性
- string具有不可变性,一旦创建就不可修改其大小,每次赋值其实都是开辟新的内存空间。
- stringBuilder:先指定分配大小容量,超过容量翻倍,默认长度是16。
- string.Format是先分配内存,然后再计算,指向的是不同的内存块。
- string a = “AB”,string b = “A”+”B”是先计算,可以指向之前存在的内存块。
- string a = “A”,string b = a + “B”是先分配内存,然后再计算,指向的是不同的内存块。
string.Empty和””的区别
Empty是静态只读字段,已经在内存上分配好了空间,使用Empty不会开辟新的内存空间。