C#中哪个更好的System.String或System.Text.StringBuilder类?

主要区别是StringBuilder是Mutable,String是Immutable。

字符串是不可变的,不可变是指如果您创建字符串对象,则无法对其进行修改,并且它总是在内存中创建字符串类型的新对象。

另一方面,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是要串联的“世界”。传递的字符串Main()未更改,这是由于String是不可变的。更改字符串的值会在StringConcat() 存储的新字符串引用中创建另一个对象和systemString 。但是引用systemString inMain()StringConcat()引用不同的字符串。

  • 使用StringBuilderConcat方法:在此方法中,我们传递字符串“ Hello”并执行“ stringBuilderString.Append(“ World”);” 它将字符串的实际值(在Main中)更改为“ Hello World”。这是由于StringBuilder是可变的,因此更改了它的值这一简单事实