흔히 알고 있는 문자열을 이어붙이는 방법이다.
string result = "hello" + "world"; // "helloworld"
+
기호를 사용하여 문자열을 조합할 때 마다 새로운 string이 생성 됨.
이전의 문자열 객체는 GC(가비지 컬렉터)의 수거 대상
이 된다.
연산 한 번당 메모리를 하나씩 가지게 되며, 반복문으로 +
연산을 돌린다면 다수의 string 객체 메모리가 낭비되는 셈이다.
즉, 많은 +
연산을 실행할 수록 메모리가 낭비되고 이로 인해서 가비지 컬렉션
이 자주 발생하게 되어 성능 저하
를 유발할 수 있다.
StringBuilder
는 문자열을 생성을 도와주는 클래스로 Append
를 이용해서 문자열을 이어붙일 수 있다.
+
연산과 다른점은 문자열을 조합할 때 새로운 string 객체를 생성하지 않아 메모리 누수가 되지 않는다는 것이다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < tagNameList.Count; i++)
{
valueList.Add(tmConnecter.GetCachedTagValue(tagNameList[i]));
string tagName = tagNameList[i];
string tagValue = valueList[i];
sb.Append("TagName" + (i + 1) + " : " + tagName + Environment.NewLine + "TagValue" + (i + 1) + " : " + tagValue + Environment.NewLine);
}
sb.Append("\n" + "\n");
문자열 수정이 자주 일어나는 것이 아니라면 연산자를, 그게 아니라면 Append를 사용하자.