c#中的string和StringBuilder的区别
string和StringBuilder的区别
解析c#中的string和StringBuilder的区别,只有非常了解后我们才能更好的编程和灵活使用。
区别
1、类 String 表示字符串, 比如“ abc ”。 类 StringBuilder 表示可改变大小的字符序列( sequence of characters ),多个字符组成字符序列,字符序列和字符串是同一个意思。二者的区别在于, String 类型的字符串是常量,字符串创建出来后不允许修改。而 StringBuilder 类型的字符串是可修改的。
2、string的缺点就是每次字符串变量的内容发生变化时,都必须重新分配内存。比如,如果创建一个迭代100000次的循环,每次迭代都将一个字符连接到字符串,这样内存 中就会有100000个字符串,每个字符串仅仅与前一个字符串相伴只是有一个字符不 同,性能影响是很大的。StringBuilder通过分配一个缓存,就是一个工作区来解决这些 问题,在工作区中队字符串应用StringBuilder类的相关方法。包括添加,删除,移除,
插入和替换字符等等。执行完之后,将调用ToString方法把工作区中的内容转换为一个 字符串,方便赋给一个字符串变量。这样StringBuilder会提升一些性能。
3、企业项目中用的比较多,经常SQL连接。StringBuilder的对象是动态的,可以改变字符
串的内容。StringBuilder修改字符串内容的方法。
1)StringBuilder.Append ()。将内容追加到当前StringBuilder字符串的结尾。
StringBuilder MySB = new StringBuilder("您好!");
MySB.Append("大家好!");
Console.WriteLine(MySB);
2)StringBuilder.AppendFormat()。用一个带格式文本来代替字符串要传递的符号。
int MyMoney = 24;
StringBuilder MySB = new StringBuilder("欠我的钱是");
MySB.AppendFormat(”{0:C} MyMoney);
Console.WriteLine(MySB);
3)StringBuilder.lnsert(int,string)。将字符串和对象插入到当前StringBuilder字符串的 指定位置。
4)StringBuilder.Remove(p,n)。在当前StringBuilder对象中移除指定的字符,就是说 从P位置开始删除n个字符。
5)StringBuilder.Replace(a,b)。就是用b替换a指定字符串,a和b都是字符或字符串。
string a = "aaa aaa aaa";
string b=a.Replace("a","w");
结果输出"www www www"。
上面这几种方法string也是用的,甚至比StringBuilderti要多一些。多出来的有如下:
PadRight () /PadLeft ()方法,根据指定宽度,用相应的个数给定字符天才字符中,如果未指定填充字符,则使用空白符来填充。
string a = "abcdefg";
a=a.PadRight(a.Length+3, "!");
结果输出"abcdefg!!!"。
Split(char*[])方法,char数组包含分隔符,可用将字符串分割为子串,这些子串将作为 一个字符串数组中的元素返回。
SubstringO方法,从指定的位置N开始抽取指定的长度串,如果指定为1,就抽取长度 为1的子串。
ToUpper〇/ToLower(),返回字符串的大小写形式的副本。
Trim()/Trim(char[]),删除字符串中所有的空白符,如果提供的是一个char数组,则删除 这个char数组指定的前导和结尾字符。
TrimEnd(char[])/TrimStart([]),删除char数字指定的所有前导和末尾的字符,如果数组 是null,则删除空白符。
ToCharArray()/ToCharArray(n, 1),从字符串中抽取字符,并将它放入一个Unicode字 符数组中。
4、每个 StringBuilder 类型的字符串都有一个空间,具备一定容量用来存放字符串。若是字符串的长度很长,空间已经无法存放得下字符串,那么,该空间的容量会自动变大。
在多线程环境下, StringBuilder 类型的字符串是线程不安全的。也就是说,多个线程共享同一个 StringBuilder 类型的字符串,会引发线程安全的问题。若是需要保证字符串是线程安全的,使用 StringBuffer 代替StringBuilder 。
创建StringBuilder 实例的时候,不能传递一个 null 对象作为实参,否则会抛出异常NullPointerException 。
c#中的string和StringBuilder的区别相关推荐
- 【翻译】Java中String, StringBuffer, StringBuilder的区别
2019独角兽企业重金招聘Python工程师标准>>> String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...
- Java:中的String,StringBuilder,StringBuffer三者的区别
Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBu ...
- string 与stringbuilder的区别
string 与stringbuilder的区别 C# String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就 ...
- C#中的string和StringBuilder
C#中的string和StringBuilder string string使用 Length 字符串比较.CompareTo() 字符串连接 字符串的索引 Replace() Split() Sub ...
- Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- java中string 和stringbuffer的区别_Java中的String,StringBuilder,StringBuffer三者的区别...
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Java中的String,StringBuilder,StringBuffer的区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- Java 中的 String、StringBuilder、StringBuffer 的区别
目录 一.是什么? 二.区别是? 1. 运行速度(执行速度) 2. 线程安全 三.小结 四.加餐 一.是什么? String 不可变字符序列 String 是字符串常量,其对象一旦创建之后该对象是不可 ...
最新文章
- 在Ubuntu8.10下为PHP安装coreseek全文检索引擎支持的详细步骤
- 关于解决安装pwndbg问题sys.stderr.write(f“ERROR: {exc}“) /usr/bin/python3.5: No module named ensurepip
- 网路神警上网行为管理系统 v3.4.5官方版
- 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
- python xlwt设置单元格的自定义背景颜色
- Zabbix Windos agent 安装
- linux常见权限相关错误及解决
- .net C#实现图像对比
- python vbscript_VBScript学习笔记
- 读《如何阅读一本书》乱摘
- 迪文屏幕ttl转232选择
- SoC第一讲——Vivado的Block Design 的使用
- python, echarts 实现世界地图地域流向地图
- mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据
- python鸭子类型与协议理解
- 爬虫训练场项目重要组件,导航栏+轮播图
- 计算机网络--第二章物理层
- 修改IPQ4019/4018的MTD分区
- 2021年深圳光明区科技型中小企业市级配套资助申报条件及流程,补贴200万
- VUE项目打包部署后刷新浏览器不是最新代码
热门文章
- url scheme Linux,自定义URL Scheme完全指南
- java 截取优酷视频_通过JAVA获取优酷视频
- 人工神经网络 人工智能,人工智能神经网络论文
- 改变vim配色:安装colorscheme
- android 开机动画竖屏,Android 5.0 开机横屏修改方法
- 中冠百年|短期理财和长期理财哪个好
- 7.关于cdn、页面静态化
- android 黑白,使用Android拍摄黑白照片(黑白)
- 苹果IOS10新系统QQ等各种无限闪退[已解决]
- 字体设计结构调整方法