zuoxy

导航

奇妙的字符串

  在工作中经常用到字符串,所以抽空时候多看了一下C#中string的内容。不看不知道,一看还真奇妙。

  在这之前,先说一下C#中方法参数的分类。《C# Language Specification 1.2》中分了4类:值参数(默认都是进行这种传递),引用参数(在定义方法时用ref声明,调用时也要加上ref关键字),输出参数(在定义方法时用out声明,调用时也要加上out关键字;与引用参数的区别是ref的实参需要初始化,而out的实参则不需要),参数数组(用params关键字声明,在使用时有些限制,这里不做具体说明了)。

  这里就值参数而言,又根据传入的数据类型分为值类型的和引用类型的。值类型不难理解,形参作为实参的副本,经过函数处理不会影响传入的值类型参数;引用类型,由于参数变量存放的是地址,所以引用类型的参数经过函数的处理则会反映在退出函数的时候。

  就string类型,其本身属于引用类型。然而其作为参数传递时,却表现着值类型的行为。岂不怪哉?我也还没有找到对此合理的解释。而且CLR还对字符串进行了驻留内存的处理,更是增加了初学者的困惑。突然感觉到,对于语言的学习,千万不可只停留在表面。要深入了解语言背后的内幕。正所谓,知其然,更要知其所以然!

posted on 2010-08-31 20:16  zuoxy  阅读(223)  评论(0编辑  收藏  举报