String & StringBuilder

최정훈·2024년 9월 25일

C#에서는 String과 StringBuilder 두 가지 클래스를 제공하여 문자열을 다룬다.

  • String string클래스는 불변한 특성을 가지고 있다. 이는 문자열이 한 번 생성되면, 변경할 수 없다는 것을 의미한다. string이 불변의 특성을 가지는 이유는, 멀티스레드 환경을 고려하여, 여러 스레드들이 접근할 때, 이에 대한 동기화를 처리하는 것보다 변경이 되지 않도록, 읽기 전용으로 만드는게 비용이 더 저렴하다고 생각했기 때문이다. 문자열을 수정하면, 이전의 문자열은 가비지가 되어 GC(Garvage Collector)의 처리를 받게 되고, 새로운 문자열이 생성되며, 기존의 문자열은 변경되지 않는다.
    string a = "Unity"; // 새로운 문자열
    string b = a + "Game"; //새로운 문자열 생성

  • StringBuilder StringBuilder클래스는 가변한 특성을 가지고 있다. StringBuilder는 동적으로 크기가 조절되며, 문자열의 수정이 가능하다. 이에는 기본적으로 16문자를 담을 수 있는 자리가 할당되어 있으며, 할당된 크기 내에서는 무슨 짓을 해도 가비지가 생성되지 않는다.
    StrinBuilder a = new StrinBuilder("Unity");
    a.Append("Game"); // 기존의 문자열을 수정

  • 그렇기 때문에, 수정이 빈번하게 일어나는 문자열의 경우, string 보다는 stringBuilder를 사용하는 것이 더 좋다.
profile
게임개발자(희망)의 공부일지

0개의 댓글