在 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 是可變的,因此會更改其值。**
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP