字符串

String:

CLR可通过一个String对象共享多个完全一致的String内容。这样能减少系统中的字符串数量———从而节省内存——这就是所谓的"字符串留用"((string inteming)°。

MSDN文档将interming翻译成"拘留",专门供字符串留用的表称为"拘留池"。本书采用"留用"这一译法。这个技术的详情将在本章后面详细解释。

 

字符串池:

编译源代码时,编译器必须处理每个字面值(literal)字符串,并在托管模块的元数据中嵌入。同一个字符串在源代码中多次出现,把它们都嵌入元数据会使生成的文件无谓地增大。

为了解决这个问题,许多编译器(包括C#编译器)只在模块的元数据中只将字面值字符串写入一次。引用该字符串的所有代码都被修改成引用元数据中的同一个字符串。编译器将单个字符串的多个实例合并成一个实例,能显著减少模块的大小。但这并不是新技术,CC++编译器多年来一直在采用这个技术(Microsoft的C/C+编译器称之为"字符串池")。尽管如此,字符串池仍是提升字符串性能的另一种行之有效的方式,而你应注意到它的存在。

 

StringBuilder

和String不同,StringBuilder代表可变(muable)字符串。也就是说,StrngBulider的大多数成员都能更改字符数组的内容,同时不会造成在托管堆上分配新对象。StringBuider只有以下两种情况才会分配新对象。


  1. 动态构造字符串,其长度超过了设置的"容量"。
  2. 调用 StringBuilder的 ToString 方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值