C# 中 System.String 和 System.Text.StringBuilder 类哪个更好?
csharpserver side programmingprogramming更新于 2025/10/2 12:07:17
主要区别在于 StringBuilder 是可变的,而 String 是不可变的。
String 是不可变的,不可变意味着如果创建了字符串对象,就无法修改它,它总是在内存中创建一个新的字符串类型的对象。
另一方面,StringBuilder 是可变的。这意味着,如果我们创建一个字符串构建器对象,那么我们可以执行任何操作,例如插入、替换或追加,而无需每次都创建新的实例。它会在内存中的一个位置更新字符串,而不会在内存中创建新的空间。
示例
using System;
using System.Text;
class DemoApplication{
public static void Main(String[] args){
String systemString = "Hello";
StringConcat(systemString);
Console.WriteLine("String 类结果:" + systemString);
StringBuilder stringBuilderString = new StringBuilder("Hello");
StringBuilderConcat(stringBuilderString);
Console.WriteLine("StringBuilder 类结果:" + 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 类结果:Hello StringBuilder 类结果: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 是可变的,因此其值会改变。

