[Today I Learned] C# string + string 과 StringBuilder.Append() 차이

suwoncityboyyy·2023년 5월 12일
0

C#, .net

목록 보기
2/3

string + string

흔히 알고 있는 문자열을 이어붙이는 방법이다.

string result = "hello" + "world"; // "helloworld"

+ 기호를 사용하여 문자열을 조합할 때 마다 새로운 string이 생성 됨.
이전의 문자열 객체는 GC(가비지 컬렉터)의 수거 대상 이 된다.

연산 한 번당 메모리를 하나씩 가지게 되며, 반복문으로 +연산을 돌린다면 다수의 string 객체 메모리가 낭비되는 셈이다.

즉, 많은 + 연산을 실행할 수록 메모리가 낭비되고 이로 인해서 가비지 컬렉션이 자주 발생하게 되어 성능 저하를 유발할 수 있다.

StringBuilder.Append(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를 사용하자.

profile
주니어 개발자 기술노트

0개의 댓글