C#의 문자열 문자열 MSDN
변경할 수 없는 데이터 유형이며 수정할 수 없습니다.

MSDN에서 설명한대로
문자열은 변경할 수 없는 데이터 유형이며 수정할 수 없습니다.
따라서
string str = "Hello";
str += "World";
위와 같이 편집하는 것은 사실상 수정이 아니라 새로운 문자열 객체를 생성하는 행위입니다.
+= “세계”; str 문자열을 수정합니다. Hello에 World 포함
실제로 새 문자열 개체가 생성되고 이전 “Hello” 문자열 개체는 GC에 의해 해제됩니다.
따라서 문자열 조작 작업이 많은 경우 문자열보다는 StringBuilder를 사용하는 것이 올바른 방법인 것 같습니다.

그렇다면 새 문자열 객체를 생성하지 않고 StringBuilder를 생성하는 방법은 무엇입니까?
이는 StringBuilder가 내부적으로 버퍼(설정되지 않은 경우 기본값 16)를 갖고 이를 통해 문자열을 수정하기 때문입니다.
아래와 같이 5글자를 입력하면
StringBuilder sb = new StringBuilder("Hello");
Console.WriteLine($"StringBuilder의 Capacity {sb.Capacity}");
StringBuilder의 Capacity 16
기본 용량은 16으로 설정되어 있습니다.
그렇다면 16의 크기를 넘어서면 어떨까요?
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; ++i)
{
sb.Append("Hello");
Console.WriteLine($"StringBuilder의 Capacity {sb.Capacity}");
}

용량의 값이 두 배가 되는 것을 볼 수 있습니다.
(버퍼 크기를 변경하는 알고리즘은 .NET 버전에 따라 다를 수 있음)
결국 문자열을 문자열처럼 매번 수정할 때만큼은 아닙니다.
또한 StringBuilder는 버퍼 값이 수정될 때마다 메모리를 할당합니다.
또한 가비지 수집기에 의해 해제됩니다.
하지만!
그래도 StringBuidler가 문자열을 수정할 때 메모리 할당 수를 줄일 수 있다는 점에서 우월한 것은 분명합니다.
따라서
문자열 조작에는 많은 것이 필요합니다: StringBuidler
간단한 문자열 조작 또는 상수로 사용: 문자열
적절하게 사용하는 것이 바람직할 것 같습니다.

