본문 바로가기
프로그래밍/C#

C# 가변(Mutable)과 불변(Immutable) 타입에 대하여

by bantomak 2023. 1. 25.

가변 타입과 불변 타입에 대해서

글자 그대로 변화가 가능한지(can change) 혹은 불가능 한지(can not change)를 표현한다.

그렇다면 어떤 게 변하고 어떤 게 변하지 않는다는 것일까?

 

가변(Mutable) - 동일한 메모리 주소에 값 다시 쓰기가 가능하다. 같은 메모리 주소에 값을 넣는다.

불변(Immutable) - 동일한 메모리 주소에 값 다시 쓰기가 불가능. 매번 새로운 메모리 주소에 값을 넣는다.

 

- 가변 타입 예시

StringBuilder

 

- 불변 타입 예시

String

 

- 가변, 불변 타입 선택 가능

C# 기본 타입(Primitive Type)들 (int, byte, short, bool, float 등등)

사용자 정의 Class

 

보통 String과 StringBuilder의 차이점에 대해서 많이 묻곤 하는데 결국 이 두 타입의 차이는 가변이냐 불변이냐의 차이.

 

- 불변 타입의 장점

추후에 어떻게 쓰여질지에 대해서 고민하지 않아도 돼서 더 직관적인 코딩이 가능하다.

메모리를 공유하지 않기 때문에 Thread-Safe하다.

 

참고 사이트

 

Mutable And Immutable Class In C#

In this article, we are going to learn about mutable and immutable class in C#.

www.c-sharpcorner.com

 

Immutable vs Mutable C#

I am trying to write a quick snippet to demonstrate the difference between an immutable and mutable type. Does this code seem to right to you all? class MutableTypeExample { private string _te...

stackoverflow.com

'프로그래밍 > C#' 카테고리의 다른 글

C# 간단하게 Json 형식 파싱하기  (0) 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

댓글