더북(TheBook)

StringBuilder는 문자열을 늘릴 때마다 메모리를 재할당하고 복사하는 대신 내부적으로 연속 메모리 블록을 사용한다. 따라서 처음부터 문자열을 만드는 것보다 더 효율적이다.

물론 다음과 같이 관용적이고 훨씬 더 짧은 코드를 사용할 수도 있다. 하지만 항상 이런 식의 코드를 사용할 수 있는 것은 아니다.

String.Join(", ", names);

보통 문자열을 초기화할 때 이를 한꺼번에 연결하는 것도 괜찮다. 필요한 총 길이를 계산한 후 버퍼를 한 번만 할당하면 되기 때문이다. 예를 들어 덧셈 연산자와 공백을 이용하여 이름과 성을 결합하는 함수가 있을 경우, 여러 단계를 거치는 것이 아니라 다음과 같이 한 번에 하나씩 새 문자열을 만드는 것이다.

public string ConcatName(string firstName, string middleName, string lastName) {
    return firstName + " " + middleName + " " + lastName;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.