首页 / 软件开发 / .NET编程技术 / .NET,你忘记了么?(六)——再谈String
.NET,你忘记了么?(六)——再谈String2011-04-12 博客园 飞林沙一. 文章伊始在文章之前,说下写出这篇文章的目的。在我昨天的一篇文章<<重温设计模式(一 )——享元模式(Flyweight) >>中,我在文中提到了关于String的字符串驻留机制。 在文章的评论中,杨同学对我的字符串相关观点提出质疑,并且成文,不过我现在无法找到 那个链接了。于是,我想把这个老掉牙的话题在此重谈。究竟我们对String这个常用的类型有多少理解。二. 从C看起是我接触的第一个程序语言。还记得当时给我的C语言老师是一个专业做Java SOA的 老师。于是,她在讲授C的时候经常给我们时不时地与Java做着对比,尽管我们当时并不懂Java 是个什么东东,只知道这个词经常出现于手机游戏上。当时我还记得老师一句很经典的话:我们要记得,C中没有字符串这个概念(其实我们当 时还不懂什么是字符串),所谓的字符串在C中表现为字符数组。那就让我们来复习一下,在C中的“字符串”的表现形式:char s[]=”abc”;接下来,我们便可以使用s去调用各种“字符串”函数。那么我们可以清楚地看到在C语言中,“字符串”其实存储的就是字符数组的首地址,那 么在.NET中又是如何呢?三. String vs string在学校的时候,这个问题被同学无数次问过,尤其是很多学Java的朋友。string其实就是String的别名,当二者编译为IL代码时,二者并无区别,正如int之于 System.Int32。二者的分别仅仅在于:1. string是C#语言的基元类型,看起来更C#。2.System.String是FCL的基元类型。我常常是这样来使用:1. 如果涉及到语言的互操作,那么毋容置疑,一定是System.String,不再赘述,如有问 题,请参考<<.NET,你忘记了么?(一)——遵从CLS>>.2. 如果只是声明一段字符串,我会使用string,看上去可读性更高,类似于你会使用int i=3;而很少见到System.Int32 i=3一样。3. 如果是涉及到使用字符串的静态方法,那么我常常使用System.String,因为String看 起来更像一个类。