C#에서 StringBuilder의 최대 용량(MaxCapacity)을 알아내려면 MaxCapacity 속성을 사용하면 됩니다. 이 속성은 해당 인스턴스가 저장할 수 있는 최대 문자 수를 정수로 반환하며, 별도의 매개변수 없이 간단히 호출할 수 있습니다.
예제 1: 여러 StringBuilder 객체의 용량 비교
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder1 = new StringBuilder("Amy");
StringBuilder strBuilder2 = new StringBuilder("Katie");
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("StringBuider1 maximum capacity = " + strBuilder1.MaxCapacity);
Console.WriteLine("StringBuider2 capacity = " + strBuilder2.Capacity);
Console.WriteLine("StringBuider2 maximum capacity = " + strBuilder2.MaxCapacity);
Console.WriteLine("StringBuider3 capacity = " + strBuilder3.Capacity);
Console.WriteLine("StringBuider3 maximum capacity = " + strBuilder3.MaxCapacity);
Console.WriteLine("StringBuider4 capacity = " + strBuilder4.Capacity);
Console.WriteLine("StringBuider4 maximum capacity = " + strBuilder4.MaxCapacity);
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Is StringBuilder3 equal to StringBuilder2? = True StringBuider1 capacity = 16 StringBuider1 maximum capacity = 2147483647 StringBuider2 capacity = 16 StringBuider2 maximum capacity = 2147483647 StringBuider3 capacity = 16 StringBuider3 maximum capacity = 2147483647 StringBuider4 capacity = 5 StringBuider4 maximum capacity = 2147483647
결과 분석
- Capacity(용량): 현재 StringBuilder에 할당된 버퍼의 문자 수입니다. 기본 생성자로 생성하면 16부터 시작하며, 생성자에 용량을 직접 지정하면 그 값으로 초기화됩니다(예: strBuilder4는 5).
- MaxCapacity(최대 용량): StringBuilder가 저장할 수 있는 이론상 최대 문자 수로, 기본값은
int.MaxValue인 2,147,483,647입니다. 모든 인스턴스에서 동일하게 표시됩니다. - Equals() 비교: strBuilder2에 strBuilder3을 대입한 후 Equals로 비교하면 두 변수가 같은 인스턴스를 참조하므로 True가 반환됩니다.
예제 2: Capacity, Length, MaxCapacity 비교
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder = new StringBuilder("Amy");
Console.WriteLine("StringBuider capacity = " + strBuilder.Capacity);
Console.WriteLine("StringBuider length = " + strBuilder.Length);
Console.WriteLine("StringBuider maximum capacity = " + strBuilder.MaxCapacity);
}
}
출력 결과
실행하면 아래와 같은 결과를 얻을 수 있습니다.
StringBuider capacity = 16 StringBuider length = 3 StringBuider maximum capacity = 2147483647
정리하면, Capacity는 실제 할당된 버퍼 크기, Length는 현재 저장된 문자열의 길이, MaxCapacity는 저장 가능한 최대 문자 수를 의미합니다. 세 속성의 차이를 이해하면 StringBuilder의 메모리 동작과 성능 특성을 더욱 정확하게 파악할 수 있습니다.