C#에서의 문자열
1. string(=System.String)
- 빌트인타입
2. StringBuilder 클래스(똑같이 문자열을 다루게 해준다.)
- ***C#의 문자열(string)은 불변(Immutable)이다!!
- 문자열은 한번 생성이 되면 그 내용이 수정 불가
문자열 생성 = 힙 영역에 6byte 방생성(이름을 붙일수 없고) 주소를기억 하고 있는 것이 문자열 변수 주소
문자열 참조변수 에는 새로 생성된 S 변수엔 객체 주소가 지정
되어 있다.
S = "가나다" 힙영역에 새로 객체를 생성
하면 안되는 것들..
1. 문자열을 자주 추가, 삭제, 수정하는
행동
2. 크기가 큰 문자열을 수정하는 행동
문자열 수정시 사용할 경우 사용하는 메소드
StringBuilder str = new StringBuilder("홍길동");
문자열은 기본적으로 주소값을 참조한다 그래서 스트링 형으로 선언된 값을 수정할경우엔 메모리 주소값을 찾기
때문에 복사된 변수에 값엔 기존에 저장되어 있던 스트링 값을 새로이 만들어 그주소값을 바라 보기 때문에 시간이 많이 걸리게 된다.
그래서 c#에서 제공하는
StringBuilder라는 것을 제공 하며 Append라는 메소드가 수정할수 있도록 제공한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleEx
{
class Ex77_string
{
static void Main(string[]
args)
{
//M1();
//M2();
M3();
}
private static void M3()
{
//string vs
StringBuilder
DateTime start, end;
TimeSpan gap;
//1. string 테스트
string str1 = "홍길동";
start = DateTime.Now;//시작 시간
for (int i = 0; i < 100000; i++)
{
str1 = str1 + "님";
}
end = DateTime.Now;//끝 시간
gap = end - start;//소요 시간
Console.WriteLine("string
완료 : 길이[{0}], 시간[{1}]", str1.Length,
gap.TotalMilliseconds);
//2. StringBulider 테스트
StringBuilder str2 = new
StringBuilder("홍길동");
start = DateTime.Now;//시작 시간
for (int i = 0; i < 100000; i++)
{
str2.Append("님");
}
end = DateTime.Now;//끝 시간
gap = end - start;//소요 시간
Console.WriteLine("StringBuilder
완료 : 길이[{0}], 시간[{1}]", str2.Length,
gap.TotalMilliseconds);
}
private static void M2()
{
//문자열 조작이 잦을 경우 ->
StringBuilder
// -> 수정이 가능!!!
//string str = "홍길동";
StringBuilder str = new
StringBuilder("홍길동");
str.Append("님");//"홍길동" + "님"
Console.WriteLine(str);
Console.WriteLine(str.Length);
}
private static void M1()
{
string str = "홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동홍길동";
for (int i = 0; i < 100; i++)
str = str + ".";
Console.WriteLine(str);//"홍길동님"
}
}
}