String与StringBuilder的区别
String与StringBuilder的区别我们知道在.NET Framework中,String类型是一个引用类型,但是String对象还有一个重要特点,那就是一个字符串一旦被创建,就不能修改他。
比如:我们定义: string s1 = "hello"; string s2 = s1; 上述代码,s1和s2的值相同,但是他们不是同一个对象。 每次使用 System.String 类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常大。 如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的新实例。 StringBuilder类型和String类型最大的不同就是,StringBuilder类型的对象可以修改,它指向char结构数组。同时StringBuilder对象可以看作是String对象的容器,可以用来构造String对象。 虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应该把它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。以下代码示例指定可以将 MyStringBuilder 对象扩充到最大 25 个空白。 MyStringBuilder.Capacity = 25; EnsureCapacity 方法可用来检查当前 StringBuilder 的容量。如果容量大于传递的值,则不进行任何更改;但是,如果容量小于传递的值,则会更改当前的容量以使其与传递的值匹配。 也可以查看或设置 Length 属性。如果将 Length 属性设置为大于 Capacity 属性的值,则自动将 Capacity 属性更改为与 Length 属性相同的值。如果将 Length 属性设置为小于当前 StringBuilder 对象内的字符串长度的值,则会缩短该字符串。 下面列出了可以用来修改 StringBuilder 的内容的方法。 StringBuilder.Append 将信息追加到当前 StringBuilder 的结尾。 StringBuilder.AppendFormat 用带格式文本替换字符串中传递的格式说明符。 StringBuilder.Insert 将字符串或对象插入到当前 StringBuilder 对象的指定索引处。 StringBuilder.Remove 从当前 StringBuilder 对象中移除指定数量的字符。 StringBuilder.Replace 替换指定索引处的指定字符。 Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。 [C#] StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day."); Console.WriteLine(MyStringBuilder);
[C#] int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is "); MyStringBuilder.AppendFormat("{0:C} ", MyInt); Console.WriteLine(MyStringBuilder);
[C#] StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful "); Console.WriteLine(MyStringBuilder);
可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。 [C#] StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7); Console.WriteLine(MyStringBuilder);
使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 (?) 来替换它们。 [C#] StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace(’!’, ’?’); Console.WriteLine(MyStringBuilder);
本文原帖:http://www.cnblogs.com/zhjjNo1/archive/2009/09/25/1574118.html 本文来源:
参考文档:
WCF与Web Service的区别与关系 接口和抽象类的区别 控件与组件的区别(Control&Component的区别) C#.Net String类型Null与String.Empty有什么区别? C#.Net 关键字ref和out的区别 C#.Net前台线程与后台线程的区别 IIS7 经典模式和集成模式的区别 WebService, WCF, WebApi 的区别与应用|C/S框架网推荐文档 Application.ExitThread,Application.Exit的区别 Dev表格列的勾选框无效,单元格不可编辑,Editable与ReadOnly区别 ASP.NET ASPX 页面CodeFile与CodeBehind的区别 C# 将数组、集合、可枚举类型转换成逗号分隔的字符串(String.Join) .NET Framework V4.0版本经典模式和集成模式的区别 - 阿里云虚拟主机.NET版本设置 WinFramework轻量框架V2.1与旗舰版V5.1功能区别 Winform轻量级框架和重量级框架有什么区别
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |