Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 더 나은 System.String 또는 System.Text.StringBuilder 클래스는 무엇입니까?


주요 차이점은 StringBuilder는 변경 가능입니다. 반면 문자열은 변경할 수 없습니다.

String은 immutable, Immutable은 string 객체를 생성하면 수정할 수 없고 메모리에 항상 string형의 새로운 객체를 생성한다는 의미입니다.

반면 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()에서 전달된 문자열은 변경되지 않습니다. 이는 문자열이 변경 불가능하기 때문입니다. . 문자열 값을 변경하면 StringConcat() 새 문자열의 참조를 저장에 다른 객체와 systemString이 생성됩니다. . 그러나 Main() 및 StringConcat()의 참조 systemString은 다른 문자열을 참조합니다.

  • StringBuilderConcat 메서드 사용:이 메서드에서는 "Hello" 문자열을 전달하고 "stringBuilderString.Append(" World");"를 수행합니다. Main에서 문자열의 실제 값을 "Hello World"로 변경합니다. 이는 StringBuilder가 변경 가능하므로 값이 변경된다는 단순한 사실 때문입니다.