본문 바로가기
프로그래밍/C#

C# StringBuilder에 대해서

by bantomak 2024. 2. 21.

String은 불변(Immutable)이다

String은 참조 타입이면서 불변이다. 데이터 변경때마다 힙에 새로운 메모리 공간이 할당되어야 한다. 그렇기 때문에 잦은 데이터 변경은 시스템에 부하를 가져온다.

 

 

C# String은 참조 타입(Reference type)이면서 불변(Immutable)하다.

string vs StringBuilder 예를 들어, int의 경우를 살펴보자. int는 값 타입(value type)이면서 가변(mutable)이다. 값 타입은 데이터 변경 시에 새로운 메모리 할당이 일어나지 않는다. 이미 생성된 메모리의

jettstream.tistory.com

 

참조 타입이면서 가변(Mutable)인 StringBuilder

그래서 잦은 문자열 변경이 예상된다면 StringBuilder를 사용하도록 하자.

 

using System.Text;

class Program
{
    static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder("31555", 2);

        Console.WriteLine(sb.Length);      // 5
        Console.WriteLine(sb.ToString());  // 31555
    }
}

 

Append vs AppendLine

Append()

  • 기존 문자열 뒤에 문자열을 추가한다.

 

AppendLine()

  • 기존 문자열 뒤에 문자열을 추가하고 다음 라인으로 개행한다.

 

static void Main(string[] args)
{
    StringBuilder sb = new StringBuilder("31555", 2);

    Console.WriteLine(sb.ToString());

    sb.AppendLine("4455");
    sb.AppendLine("0011");
    sb.Append("0022");
    sb.AppendLine("0033");

    Console.WriteLine(sb.ToString());
}

 

 

생각해볼 부분

StringBuilder 결과값을 얻기 위해서 ToString()을 써야하는가? 안써도 실행, 결과값에 전혀 문제 없음

 

 

Why we should use ToString method with StringBuilder?

MSDN says we need to convert StringBuilder object to string, but StringBuilder works fine? Why should we convert? string[] spellings = { "hi", "hiii", "hiae" }; StringBuilder Builder = new

stackoverflow.com

댓글