Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 지정된 용량(Capacity)의 StringBuilder 생성 방법

C#에서 StringBuilder는 문자열을 효율적으로 조작할 수 있게 해주는 클래스입니다. 기본 생성자로 StringBuilder를 만들면 내부 버퍼의 초기 용량(capacity)은 16으로 설정되지만, 생성자에 숫자를 전달하면 원하는 용량을 직접 지정할 수 있습니다.

기본 개념

StringBuilder의 Capacity 속성은 현재 객체가 할당한 메모리에 저장할 수 있는 최대 문자 수를 나타냅니다. 저장할 문자열의 크기를 미리 알고 있다면, 용량을 지정하여 불필요한 메모리 재할당과 성능 저하를 방지할 수 있습니다.

예제 1: 다양한 방식으로 StringBuilder 생성하기

using System;
using System.Text;
public class Demo {
   public static void Main(String[] args){
      StringBuilder strBuilder1 = new StringBuilder("Tim");
      StringBuilder strBuilder2 = new StringBuilder("Tom");
      StringBuilder strBuilder3 = new StringBuilder();
      StringBuilder strBuilder4 = new StringBuilder(5);
      strBuilder2 = strBuilder3;
      Console.WriteLine("Is StringBuilder3 equal to StringBuilder2? = "+strBuilder3.Equals(strBuilder2));
      Console.WriteLine("StringBuider1 capacity = "+strBuilder1.Capacity);
      Console.WriteLine("StringBuider2 capacity = "+strBuilder2.Capacity);
      Console.WriteLine("StringBuider3 capacity = "+strBuilder3.Capacity);
      Console.WriteLine("StringBuider4 capacity = "+strBuilder4.Capacity);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Is StringBuilder3 equal to StringBuilder2? = True
StringBuider1 capacity = 16 
StringBuider2 capacity = 16 
StringBuider3 capacity = 16 
StringBuider4 capacity = 5

결과 분석

  • 문자열 "Tim"으로 생성한 strBuilder1은 기본 용량인 16을 가집니다.
  • strBuilder2는 strBuilder3를 참조하도록 할당되었으므로 Equals 비교 결과는 True이며, 용량 역시 동일하게 16입니다.
  • 매개변수 없이 생성한 strBuilder3도 기본 용량 16을 가집니다.
  • 생성자에 5를 전달한 strBuilder4는 지정된 대로 용량이 5로 설정됩니다.

예제 2: 용량 지정의 효과 확인하기

이번에는 기본 생성과 용량을 지정한 생성을 비교해 보겠습니다.

using System;
using System.Text;
public class Demo {
   public static void Main(String[] args){
      StringBuilder strBuilder = new StringBuilder();
      Console.WriteLine("StringBuider capacity = "+strBuilder.Capacity);
      StringBuilder strBuilder2 = new StringBuilder(20);
      Console.WriteLine("StringBuider2 capacity = "+strBuilder2.Capacity);
   }
}

출력 결과

실행 결과는 다음과 같습니다.

StringBuider capacity = 16 
StringBuider2 capacity = 20

정리

StringBuilder 생성자에 정수 값을 전달하면 해당 값만큼의 초기 용량을 가진 객체가 생성됩니다. 용량을 미리 지정하면 문자열이 늘어날 때마다 발생하는 내부 버퍼 확장 작업을 줄일 수 있어, 대용량 문자열을 반복적으로 추가하는 상황에서 성능 최적화에 큰 도움이 됩니다.