Computer >> Máy Tính >  >> Lập trình >> C#

Lớp System.String hay System.Text.StringBuilder trong C # tốt hơn?


Sự khác biệt chính là StringBuilder là Mutable trong khi Chuỗi là bất biến.

Chuỗi là bất biến, Bất biến có nghĩa là nếu bạn tạo đối tượng chuỗi thì bạn không thể sửa đổi nó và Nó luôn tạo đối tượng mới có kiểu chuỗi trong bộ nhớ.

Mặt khác, StringBuilder có thể thay đổi. Có nghĩa là, nếu chúng ta tạo một đối tượng trình tạo chuỗi thì chúng ta có thể thực hiện bất kỳ thao tác nào như chèn, thay thế hoặc nối thêm mà không cần tạo phiên bản mới mọi lúc. Nó sẽ cập nhật chuỗi tại một vị trí trong bộ nhớ, không tạo ra không gian mới trong bộ nhớ.

Ví dụ

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");
   }
}

Đầu ra

Kết quả của ví dụ trên như sau -

String Class Result: Hello
StringBuilder Class Result: Hello World
  • Sử dụng phương thức StringConcat:Trong phương thức này, chúng tôi đang truyền một chuỗi “Hello” và thực hiện “systemString =String.Concat (systemString, appendString);” trong đó appendString là “Thế giới” được nối. Chuỗi được truyền từ Main () không bị thay đổi, điều này là do Chuỗi là bất biến . Việc thay đổi giá trị của chuỗi sẽ tạo ra một đối tượng khác và systemString trong StringConcat () lưu trữ tham chiếu của chuỗi mới . Nhưng tham chiếu systemString trong Main () và StringConcat () tham chiếu đến các chuỗi khác nhau.

  • Sử dụng Phương thức StringBuilderConcat:Trong phương thức này, chúng ta đang truyền một chuỗi “Hello” và thực hiện “stringBuilderString.Append (“ World ”);” sẽ thay đổi giá trị thực của chuỗi (trong Main) thành “Hello World”. Điều này là do thực tế đơn giản rằng StringBuilder có thể thay đổi và do đó thay đổi giá trị của nó.