C# string 和 stringbuilder 的区别
C# string 和 stringbuilder 的区别
C# string 和 stringbuilder 的区别string 对象是不可改变的。每次使用 string 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会,在需要对字符串执行重复修改的情况下,与创建新的 string 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类;例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
如果不是频繁拼接的情况下,string的性能明显好于stringbuilder,如果频繁拼接就用stringbuilder,如果是展现那么用string。
例如下面的例子:
//则内存中存在了aa bb aabb 三个
string s="aa"; s +="bb";
//则内存中只有两个 "bb" "aabb" 此处少了一个"aa",其实是因为stringbuilder是可变的,"aa"变成了"aabb",而不是重新分配新空间。
stringbuilder ss="aa"; ss.Append("bb")。
StringBuilder表示可变字符字符串, 它允许我们有效的对字符串的字符执行动态操作,有效的缩减字符串的大小或者更改字符串中的字符。如果字符串变大,超过已经分配的字符的大小,StringBuilder就会自动的分配一个全新的、更大的数组,并开始使用新的数组,虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍.
- C# 获取磁盘空间大小
- C#压缩图片不失真
- c#操作XML文件的通用方法
- C# using关键字的用法
- c#中SqlBulkCopy的使用
- C#中的base和this关键字
- js中encodeURIComponent与C#中HttpUtility.UrlEncode
- C#中is 运算符与as运算符的区别和作用
- 安装C# Windows服务需要“设置服务登录”
- C#中static静态变量的用法
- C#中的深拷贝与浅拷贝的区别
- C#正则表达式Regex类的用法
- C#中字符串转换成日期
- C#静态变量、静态方法、静态类
- C#中ToDictionary,ToLookup
- C#中app.config配置文件
- 新晋小花被称女版吴卓羲 将取代滕丽名成为TVB新一代御用女警(新晋小花被称女版吴卓羲)
- 艺人吴卓羲10年警察生涯,演足10年阿Sir,系咩玩法(艺人吴卓羲10年警察生涯)
- 菲律宾潜水(菲律宾潜水价格)
- 泰国人妖(变性手术生殖器要割掉吗)
- 泰国美女(泰国人妖和女性如何区分)
- 泰国旅游业怎么样(泰国的旅游产业)
热门推荐
- vsftpd详细配置(vsftpd匿名用户上传和下载的配置方法)
- mysql触发器怎么添加(MySQL触发器的使用场景及方法实例)
- dockerpull下来的容器存放位置(详解docker pull下来的镜像存储在哪里)
- python创建文件的方法(Python3.5文件读与写操作经典实例详解)
- 腾讯云开启所有端口(腾讯云端口怎么设置?腾讯云CVM开启端口图文教程)
- sqlserver日期型数据类型是哪个(SQL Server时间戳功能与用法详解)
- 个人组建云服务器(个人云服务器搭建图文教程)
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- mysql必知必会索引(MySQL索引知识的一些小妙招总结)
- docker容器镜像内容(Docker容器从镜像恢复代码的操作步骤)