c# string

1、string是引用类型,在堆中分配内存

2、string不可修改,所谓的修改其实是生成了一份新的字符串,其内存地址已发生变化

3、以下创建字符串的方式会查询暂存池

  • 利用字面量值创建string对象,string test = "aaa";
  • 利用string.Intern()创建string对象,string test = string.Intern(str);
  • 字面量值+字面量值拼接创建string对象,string test = "aaa" + "bbb";
  • 只有编译阶段的文本字符常量会被自动添加到暂存池
  • string.Intern()可以把动态创建的字符串加入到暂存池中

4、特例,下例中a、b引用地址相同,其他情况产生的字符串地址不同

char[] aa = { '1', '2' };
string a = aa.ToString();
string b = aa.ToString();

 

posted @ 2019-12-23 16:43  gaoyanglao  阅读(248)  评论(0编辑  收藏  举报