Data Structures and Algorithms DotNet - 7、String类和StringBuilder类
Created at 2016-09-15 Updated at 2018-05-01 Category Data Structures and Algorithms
数据结构与算法-7、String类和StringBuilder类
这部分其实大家都很熟悉了,就少说点。
1、String类
C#中的字符串,用起来像是一个值类型,实际所有的字符串都是String类的一个对象,也就是引用类型。
引用类型做比较的时候,比较的是地址。但是C#中的String有点特殊,在比较的时候,比较的是值。比如:
1 | str1==str2 |
这些比较都是比较的一个一个字符的ASCII码,并非比较了地址。
具体可以参考这两篇博文:C# string 特殊的引用类型,和CLR via C# 边读边想 05 - 原生类型,值类型,引用类型。
这里用上面博文中的例子予以说明。将字符串,作为参数,传递给一个方法,想在方法中修改这个字符串。
1 | static void Main(string[] args) { |
很显然,字符串一旦创建,就是不可变的。每当改变字符串时,实际会生成一个新的对象来保存数值。
如果想修改str,就得传地址,而不是传值。上面的方法参数里,应该用ref或out。
2、StringBuilder
当改变StringBuilder对象时,改变的就是原始的那个对象,而不是副本。