c#/기타

[C#] String vs StringBuilder

byH 2021. 12. 6. 15:38
728x90
반응형

 

반복문을 이용해 1~3까지 string을 더해 "123" 이라는 글자를 만들어보자.

 string str = "";
 for (int i = 1; i < 4; i++)
{
   str += i.ToString();
}

richTextBox1.AppendText(str);

 

첫 번째는 String class를 사용할 수 있다. 

하지만 String 객체의 값은 한 번 만들면 변경할 수 없고 , 객체가 변경될 때마다 새로운 String을 만들어서 변수명에 할당해 주는 것이라고 한다.

따라서 String의 값이 빈번하게 변경되는 경우 실행 속도와 메모리 사용이 많아진다고 한다.

 

다음은 StringBuilder이다 

String과 비슷한 StringBuilder 클래스는, 문자열이 변경되면 자동으로 필요한 메모리를 동적으로 조정하고, 내용을 바꿀 수 있기 때문에 자주 변경될 때 효율적이라고 한다. 

따라서 StringBuilder로 String값을 변경 후 마지막에 .Tostring()하여 사용하면 속도와 메모리 사용을 줄일 수 있다. 

 StringBuilder sb = new StringBuilder();
 for(int i=1;i<4;i++)
{
   sb.Append(i);
}

string str = sb.ToString();
richTextBox1.AppendText(str);

 

 

StringBuilder관련 메소드 

Append StringBuilder 객체의 끝에 문자열을 추가
Clear StringBuilder 객체의 모든 문자열을 제거
CopyTo String 일부분을 문자 배열로 복사
EnsureCapacity StringBuilder 객체의 용량을 최소한 지정된 값이 되도록 함
Equals 다른 객체랑 같은 지를 부울값으로 리턴
Insert 특정한 위치에 지정한 문자열을 삽입
Remove 특정 위치에 있는 문자열을 삭제
Replace StringBuilder 객체에서 문자 혹은 Substring을 다른 문자 혹은 Substring으로 대체함
ToString StringBuilder 객체의 값을 String으로 변환함. 

초보자를 위한 c# 200제 참조 

728x90
반응형

'c# > 기타' 카테고리의 다른 글

[c#] file 경로를 경로, 파일이름, 파일 형식으로 분리  (0) 2021.12.16
[C#] enum  (0) 2021.12.06
[C#] String CONCAT, JOINT  (0) 2021.12.06
[C#] String Method  (0) 2021.12.06
[C#] String.Format() , ToString()  (0) 2021.12.06