문자와 문자열은 별다른 차이가 없어 보이지만 내부적으로는 큰 차이가 있습니다.
문자열은 문자의 배열 즉, 문자의 배열을 합쳐서 붙여놓은 것이 문자열입니다.
흔히 string문자열을 쓸 때 이런식으로("garage", "tomato"..) 사용하는데 이것들이 하나의 문자가 아니고 각각의 문자들의 배열인 문자열인 것입니다.
DataType을 string형식으로 표현할 땐 ""를, char로 표현할 땐 ''를 사용합니다 그렇지 않으면 컴파일 에러가 발생하기도 하는데 문자와 문자열은 완벽히 다르기 때문입니다.
string은 char의 배열을 연결한 상태인데요 "abcd"는 DataType이 char인 'a', 'b', 'c', 'd' 문자들이 연결되어 "abcd"배열 즉 문자열을 형성하고 있습니다.
string문자열에 적용할 수 있는 기본 함수로 .ToCharArray()가 있는데 문자열을 문자의 배열로 다시 분할 할 수 있습니다.
return 형식으로는 char[]이며 아래와 같이 문자열를 문자 배열로 return하게 됩니다.
string str = "abcd";
// char_arr = {'a', 'b,', 'c', 'd'}
char[] char_arr = str.ToCharArray();
이것이 바로 문자와 문자열의 차이인데, 문자열은 문자의 배열 집합이라고 보시면 간단합니다.
또한 각각의 문자는 유니코드 문자인코딩 방식중의 하나인 UTF-16의 규칙을 따르고 있기때문에 각각의 문자는 유니코드 고유값을 가지고 있습니다.
컴퓨터가 문자를 읽을 때는 이 유니코드의 고유값을 Binary로 변환해 0000000000110110 이런식으로 읽어들이는 것이죠.
// unicode decimal value
// a = 97
// b = 98
// c = 99
// d = 100
// unicode binary value
// a = 0000000001100001
// b = 0000000001100010
// c = 0000000001100011
// d = 0000000001100100
string str = "abcd";
char[] char_arr = str.ToCharArray();
아무렇지 않게 쓰는 문자열이 내부적으로 들어가보면 심오한 세계가 있는 것 같습니다..
아래에는 UTF-16으로 표현가능한 문자들의 Binary, Hex 등 구체적인 값들을 표시해놓은 사이트 인데요 참고해보시면 좋을 것 같습니다.
Google에 UTF-16 Table이라고 검색하면 바로 접속해볼 수 있습니다.
'C#' 카테고리의 다른 글
C# - 확장메소드 사용법 및 예시 (0) | 2021.07.15 |
---|---|
C# - List 기본함수 사용법(Add, AddRange, Contains, Clear, IndexOf, Remove, RemoveAll, Reverse, ToArray, Sort) (0) | 2021.07.14 |
C# - Get Set의 사용법, 의미 (0) | 2021.07.12 |
C# - Xml파일 제어, Xml파싱 (0) | 2021.07.08 |
C# - 연산자 오버로드 (0) | 2021.07.08 |
댓글