前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#string相关

C#string相关

作者头像
祝你万事顺利
发布2019-05-29 17:07:16
4170
发布2019-05-29 17:07:16
举报
文章被收录于专栏:Unity游戏开发
string

string是一个引用类型,其对象值存储在托管堆中。string内部是一个char集合,其长度Length是char字符数组的长度。

string的恒定性(不变性)

字符串是不可变的,任何改变都会产生新的字符串

string的驻留性

CLR提供了字符串驻留

相同的字符串在内存中只分配一次,第二次申请字符串时,找到已经申请过的字符串,会直接返回已有的字符串

字符串驻留原理: •CLR初始化时会在内存中创建一个驻留池,内部其实是一个哈希表,存储被驻留的字符串和其内存地址。 •驻留池是进程级别的,多个AppDomain共享。同时她不受GC控制,生命周期随进程,意思就是不会被GC回收 •当分配字符串时,首先会到驻留池中查找,如找到,则返回已有相同字符串的地址,不会创建新字符串对象。如果没有找到,则创建新的字符串,并把字符串添加到驻留池中。

不是任何字符串都会驻留,只有通过IL指令ldstr创建的字符串才会留用。 那该如何来验证字符串是否驻留呢,string类提供两个静态方法: •String.Intern(string str) 可以主动驻留一个字符串; •String.IsInterned(string str);检测指定字符串是否驻留,如果驻留则返回字符串,否则返回NULL

StringBuilder

StringBuilder不会创建大量的新对象

StringBuilder在追加字符串时,当字符串总长度超过当前设置的容量Capacity,会重新创建一个更大的字符数组。 调用StringBuilder.ToString(),创建新的字符串

在大量的使用字符串连接的时候,使用StringBuilder。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • string
  • string的恒定性(不变性)
  • string的驻留性
  • StringBuilder
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档