string은 메모리상 heap에 저장되는 참조(reference) 타입이다.
참조 타입인 string은 다른 참조타입과 다르게 조금 특이한 특성이 있다.
먼저 일반적인 참조타입의 '대입'과 '비교' 시 특징을 알아보자.
1. 참조타입의 대입
참조타입은 대입시 값이 복사되는 것이 아니라 데이터를 참조하는 참조자가 하나 더 늘어날 뿐 별도의 메모리가 추가 할당되는 것은 아니다.
2. 참조타입의 비교
참조타입을 비교할 시 heap의 번지를 비교하기 때문에 내용이 완전히 같아도 위치가 다르면 같지 않은 것으로 판단한다.
이런 일반적인 참조타입과 다르게 string의 '대입'과 '비교'는 특이하게 동작한다.
1. string의 대입
string은 읽기 전용이다. 따라서 대입 시 내용이 바뀌는 것이 아니라 아예 새로운 문자열이 생성된다.
2. string의 비교
string끼리 비교 시에 heap의 번지를 비교하지 않고 문자열 자체를 비교하도록 == 연산자에 오버로딩되어 있다.
그래서 heap의 번지가 다르더라도 내용이 완전히 같으면 같다고 판단한다.
'C# > 문자열' 카테고리의 다른 글
StringBuilder를 사용해 문자열 연결 (0) | 2021.08.15 |
---|---|
지정한 문자로 문자열을 분할 (Split 메서드) (0) | 2021.08.15 |
문자열의 변환(공백 제거, 임의 개수의 문자 삭제, 삽입, 치환, 대소문자 변환) (0) | 2021.08.13 |
문자열을 검색하고 추출하는 방법 (0) | 2021.08.12 |
문자열을 판정하는 방법 (null 또는 빈 문자열, 시작, 포함, 조건 만족) (0) | 2021.08.12 |