반응형
가변 타입과 불변 타입에 대해서
글자 그대로 변화가 가능한지(can change) 혹은 불가능 한지(can not change)를 표현한다.
그렇다면 어떤 게 변하고 어떤 게 변하지 않는다는 것일까?
가변(Mutable) - 동일한 메모리 주소에 값 다시 쓰기가 가능하다. 같은 메모리 주소에 값을 넣는다.
불변(Immutable) - 동일한 메모리 주소에 값 다시 쓰기가 불가능. 매번 새로운 메모리 주소에 값을 넣는다.
- 가변 타입 예시
StringBuilder
- 불변 타입 예시
String
- 가변, 불변 타입 선택 가능
C# 기본 타입(Primitive Type)들 (int, byte, short, bool, float 등등)
사용자 정의 Class
보통 String과 StringBuilder의 차이점에 대해서 많이 묻곤 하는데 결국 이 두 타입의 차이는 가변이냐 불변이냐의 차이.
- 불변 타입의 장점
추후에 어떻게 쓰여질지에 대해서 고민하지 않아도 돼서 더 직관적인 코딩이 가능하다.
메모리를 공유하지 않기 때문에 Thread-Safe하다.
참고 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# 간단하게 Json 형식 파싱하기 (2) | 2023.01.26 |
---|---|
C# 연산자(Operators) (0) | 2023.01.25 |
C# 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy) (0) | 2023.01.18 |
C# 비트 연산자 (0) | 2023.01.15 |
C#의 역사 (0) | 2023.01.03 |
댓글