【Unity|C#】基础篇(17)——字符串处理(String/StringBuilder)

【学习资料】

  《C#图解教程》(第25章)https://www.cnblogs.com/moonache/p/7687551.html
  电子书下载:https://pan.baidu.com/s/1mhOmBG0

 

【内容】 

    • string
    • StringBuilder
    • 两者比较

 


 【笔记】

  • string
    • string是  System.String 类的别名
    • 字符串常量,内容不可修改。
    • 注:每次修改(赋值、拼接、替换),都是 重新生成新的字符串(开辟新的堆内存),然后将引用指向新的字符串。
    • 如图:string拼接时,会重新生成新的字符串(开辟新的堆内存),然后改变 s 的引用

         

    • 常用方法

 

 

  • StringBuilder
    • 命名空间: using System.Text; 
    • 内部数据存储:可变数组 char[] 
    • 每次修改(赋值、拼接、替换),都是对内部char数组进行操作,不会在堆内存创建新的字符串。
    • 注:StringBuilder创建时需要预设内置数组char[]的长度大小。所以初始化会比较慢一点。
    • 注:只有当新的字符串的长度 大于 内部数组最大长度时,才会重新创建新的 char[]  (开辟新的堆内存)
    • 如图:拼接时,只会在内部分配的可变数组中进行修改,s 的引用不变

        

 

  • 两者比较
    • 频繁改动的字符串:使用StringBuilder性能更高,GC更少。
    • 改动不多:性能差不多,而使用string,操作比较方便。
    • 注:StringBuilder创建时需要预设内置数组char[]的长度大小。所以初始化会比较慢一点。

 

posted @ 2020-02-08 19:56  夏天的风92  阅读(2898)  评论(0)    收藏  举报