在 C# 中,System.String 和 System.Text.StringBuilder 類哪個更好?


主要區別在於 **StringBuilder 是可變的**,而 **String 是不可變的**。

String 是不可變的,不可變意味著如果您建立了一個字串物件,則無法修改它,並且它始終會在記憶體中建立新的字串型別物件。

另一方面,StringBuilder 是可變的。這意味著,如果我們建立一個 StringBuilder 物件,那麼我們可以執行任何操作,例如插入、替換或追加,而無需每次都建立新例項。它將在記憶體中的一個位置更新字串,不會建立新的記憶體空間。

示例

 即時演示

using System;
using System.Text;
class DemoApplication{
   public static void Main(String[] args){
      String systemString = "Hello";
      StringConcat(systemString);
      Console.WriteLine("String Class Result: " + systemString);
      StringBuilder stringBuilderString = new StringBuilder("Hello");
      StringBuilderConcat(stringBuilderString);
      Console.WriteLine("StringBuilder Class Result: " + stringBuilderString);
   }
   public static void StringConcat(String systemString){
      String appendString = " World";
      systemString = String.Concat(systemString, appendString);
   }
   public static void StringBuilderConcat(StringBuilder stringBuilderString){
      stringBuilderString.Append(" World");
   }
}

輸出

以上示例的輸出如下:

String Class Result: Hello
StringBuilder Class Result: Hello World
  • StringConcat 方法的使用:在此方法中,我們傳遞一個字串“Hello”,並執行“systemString = String.Concat(systemString, appendString);”,其中 appendString 為要連線的“ World”。從 Main() 傳遞的字串沒有改變,這是因為 **String 是不可變的**。更改字串的值會建立另一個物件,而 StringConcat() 中的 systemString **儲存新字串的引用**。但是,Main() 和 StringConcat() 中的引用 systemString 指向不同的字串。

  • StringBuilderConcat 方法的使用:在此方法中,我們傳遞一個字串“Hello”,並執行“stringBuilderString.Append(" World");”,這會將字串(在 Main 中)的實際值更改為“Hello World”。這是因為 **StringBuilder 是可變的,因此會更改其值。**

更新於: 2020年8月4日

2K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.