
문자열 "안녕하세요" 에서 문자 "안" 구하기
MSW에서는 string타입 변수가 있을 때,
몇번째에 어떤 문자가 있는지 알기 어려웠는데,
C#에서는 string타입 변수가 있을 때,
변수명[index]로 접근할 수 있다는게 신기하다.
string은 문자열이고,char은 문자로 다른 데이터 타입이다.그렇다면 왜
string에[]로 몇번째 글자가 있는지 알 수 있는걸까?
C#에서 string은 문자의 배열인 char[]과 비슷하지만,
불변성을 가지는 자료형이라고 한다.
불변성 : 한번 생성된 데이터는 값을 수정할 수 없다.
string text = "안녕하세용";
Console.WriteLine(text[0]); // 안
text[0] = '반'; // 읽기만 가능해서 수정 불가
즉 char[]은 문자 하나하나가 독립적으로 변경이 가능한 배열이지만,
string은 한번 생성되면 내용을 수정할 수 없다.
string stringTest = "안녕하세용";
char[] charTest = stringTest.ToCharArray();
위와 같이 string을 char로 변환하는 방법이 있다.
char[] charTest1 = new char[5];
charTest1[0] = '반';
charTest1[1] = '갑';
charTest1[2] = '습';
charTest1[3] = '니';
charTest1[4] = '당';
string stringTest1 = new string(charTest1); // 방법 1
string stringTest2 = string.Join("", charTest1); // 방법 2
위와 같이 char를 string으로 변환하는 방법이 있다.
string stringTest3 = "안녕하세용";
char[] charTest3 = strinTest1.ToCharArray();
Console.WriteLine($"{stringTest3} : {charTest3}");
// 안녕하세용 : System.Char[]
char[]을 문자열 보간으로 콘솔에 출력하면 System.Char[]로 출력된다.
Console.WriteLine($"{stringTest3} : {string.Join("", charTest3)}");
// 안녕하세용 : 안녕하세용
이럴 때는 위의 방법대로 string타입으로 변환하면 정상적으로 출력된다.

배열 안의 값들 사이사이에 구분자separator을 넣어 string타입으로 반환하는 함수이다.
params키워드가 있어서 배열 타입뿐만 아니라 개별적으로 넣어도 된다.
// 개별적으로 넣는 예시
string joinTest = string.Join(", ", "가", "나", "다");