您的位置:知识库 » .NET技术

[你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

作者: Anytao  来源: 博客园  发布时间: 2008-10-13 11:10  阅读: 4262 次  推荐: 0   原文链接   [收藏]  

系列文章导航:

[你必须知道的.NET] 开篇有益

[你必须知道的.NET] 第一回:恩怨情仇:is和as

[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类

[你必须知道的.NET] 第三回:历史纠葛:特性和属性

[你必须知道的.NET] 第四回:后来居上:class和struct

[你必须知道的.NET] 第五回:深入浅出关键字---把new说透

[你必须知道的.NET] 第六回:深入浅出关键字---base和this

[你必须知道的.NET] 第七回:品味类型---从通用类型系统开始

[你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

[你必须知道的.NET] 第九回:品味类型---值类型与引用类型(中)-规则无边

[你必须知道的.NET] 第十回:品味类型---值类型与引用类型(下)-应用征途

[你必须知道的.NET] 第十一回:参数之惑---传递的艺术(上)

[你必须知道的.NET] 第十二回:参数之惑---传递的艺术(下)

[你必须知道的.NET] 第十三回:从Hello, world开始认识IL

[你必须知道的.NET] 第十四回:认识IL代码---从开始到现在

[你必须知道的.NET] 第十五回:继承本质论

[你必须知道的.NET] 第十六回:深入浅出关键字---using全接触

[你必须知道的.NET] 第十七回:貌合神离:覆写和重载

[你必须知道的.NET] 第十八回:对象创建始末(上)

[你必须知道的.NET] 第十九回:对象创建始末(下)

[你必须知道的.NET]第二十回:学习方法论

[你必须知道的.NET]第二十一回:认识全面的null

[你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

[你必须知道的.NET]第三十二回,深入.NET 4.0之,Tuple一二


 

2 欲求思考

欲求思考,则从基本开始,对于理解整个string intern机制是大有裨益的,因此深入的第一步就从基本概念开始。随着我们分析的层层深入,就会发现看似曲折的结果,原来不过如此而已,这正是技术探求的最佳方式。

什么是string

什么是string呢,提起这个问题,我想下面的图例可以给出一点启示:

 

string在本质上就是一连串的有顺序的字符集合。

简单的说,string就是char[],而在.NET中string头一回具有了类的概念,暗合了.NET一切皆为对象的大一统格局。回归本质,我们重新审视如此另类而多彩的string,你会不禁明白,string本质上就是一个16位Unicode字符数组。打开string的Disassemble代码,我们可直击其本质:

    [Serializable, ComVisible(true)]
    public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>,
 IEnumerable<char>, IEnumerable, IEquatable<string>
    {
    }

结合string的定义,我们可以看出其基本的特性主要包括:

  • 引用类型,string本质上是引用类型,相关内容参考《你必须知道的.NET》 对值类型和引用类型的讨论。
  • 字符串恒等性。
  • 字符串驻留性,本文的研究重点。
  • 密封性,由sealed关键字可见,sealed特性为实现字符串恒等性和字符串驻留机制,提供了基础保证,具体的原因参见《你必须知道的.NET》 关于string的相关论述。

关于这些特性并非本文关注的热点,还有大量的命题值得我们关注,总结起来还可包括:

  • 字符串比较:以等价规则而非恒等规则进行比较。
  • 常用方法:Trim()、ToLow()、Replace()、Split()、PadRight()、SubString()和Join()
  • 格式化。
  • 转移字符。
  • StringBuilder,另一个重要的话题。
  • Encoding,编码。
  • Culture & Internationalization,语言文化。
  • overloads == ,==重载。

由此可知,string真是一个丰富而多彩的技术仓库,饱含了.NET技术中很多精髓与技巧,我们不可能在本文中尽述其然,更多的论述和分析可以参考以下信息:

 

快捷参考

关,你可以参考:

  • string的更多技术与规则,可以参考《你必须知道的.NET》 8.3节“如此特殊:大话String”
  • 等价规则和恒等规则,可以参考《你必须知道的.NET》 8.2节“规则而定:对象判等”

                                                                                      

接下来,本文的主题闪亮登场。

 

0
0

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻