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的区别相关推荐

  1. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  2. Java:中的String,StringBuilder,StringBuffer三者的区别

    Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBu ...

  3. string 与stringbuilder的区别

    string 与stringbuilder的区别 C#   String   对象是不可改变的.每次使用   System.String   类中的方法之一时,都要在内存中创建一个新的字符串对象,这就 ...

  4. C#中的string和StringBuilder

    C#中的string和StringBuilder string string使用 Length 字符串比较.CompareTo() 字符串连接 字符串的索引 Replace() Split() Sub ...

  5. Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  6. java中string 和stringbuffer的区别_Java中的String,StringBuilder,StringBuffer三者的区别...

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  7. Java中的String,StringBuilder,StringBuffer的区别

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > ...

  8. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  9. Java 中的 String、StringBuilder、StringBuffer 的区别

    目录 一.是什么? 二.区别是? 1. 运行速度(执行速度) 2. 线程安全 三.小结 四.加餐 一.是什么? String 不可变字符序列 String 是字符串常量,其对象一旦创建之后该对象是不可 ...

最新文章

  1. 在Ubuntu8.10下为PHP安装coreseek全文检索引擎支持的详细步骤
  2. 关于解决安装pwndbg问题sys.stderr.write(f“ERROR: {exc}“) /usr/bin/python3.5: No module named ensurepip
  3. 网路神警上网行为管理系统 v3.4.5官方版
  4. 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
  5. python xlwt设置单元格的自定义背景颜色
  6. Zabbix Windos agent 安装
  7. linux常见权限相关错误及解决
  8. .net C#实现图像对比
  9. python vbscript_VBScript学习笔记
  10. 读《如何阅读一本书》乱摘
  11. 迪文屏幕ttl转232选择
  12. SoC第一讲——Vivado的Block Design 的使用
  13. python, echarts 实现世界地图地域流向地图
  14. mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据
  15. python鸭子类型与协议理解
  16. 爬虫训练场项目重要组件,导航栏+轮播图
  17. 计算机网络--第二章物理层
  18. 修改IPQ4019/4018的MTD分区
  19. 2021年深圳光明区科技型中小企业市级配套资助申报条件及流程,补贴200万
  20. VUE项目打包部署后刷新浏览器不是最新代码

热门文章

  1. url scheme Linux,自定义URL Scheme完全指南
  2. java 截取优酷视频_通过JAVA获取优酷视频
  3. 人工神经网络 人工智能,人工智能神经网络论文
  4. 改变vim配色:安装colorscheme
  5. android 开机动画竖屏,Android 5.0 开机横屏修改方法
  6. 中冠百年|短期理财和长期理财哪个好
  7. 7.关于cdn、页面静态化
  8. android 黑白,使用Android拍摄黑白照片(黑白)
  9. 苹果IOS10新系统QQ等各种无限闪退[已解决]
  10. 字体设计结构调整方法