String과 StringBuilder

string은 char[]로서 immutable 타입이다. 이것이 무슨 말인고 하니 string에 ‘+’ 연산을 하면, 현재 string에 새로운 string에 더해지는게 아니라, 현재 string과 새로운 string을 더한 새로운 string을 만들어 낸다는 이야기다.

아래와 같은 코드는 loop를 돌 때마다 추가적으로 string을 만들어 낸다. string이 char[]임을 생각해보면 사실 당연한 결과다.

string num = "";

for (int i = 0; i < 10; i++)
{
    num += i.ToString();
}

이는 자원 낭비이므로 위와 같이 string을 반복적으로 연산할 일이 있을 때는 StringBuilder를 사용하도록 권장된다. StringBuilder는 string과는 사용법이 약간 다른데, 변수보다는 메서드를 사용하는 방식에 가깝다.

StringBuilder num = new StringBuilder();

for (int i = 0; i < 10; i++)
{
    num.Append(i.ToString());
}

StringBuilder는 ToString() 으로 string 타입으로 변환시킬 수 있다.