더북(TheBook)

42.5 불변 형식

영어 단어로 immutable은 ‘변경 불가능한’이라는 뜻입니다. 프로그래밍에서 불변 형식(immutable type)은 개체가 만들어지고 값이 변경되지 않음을 의미합니다. 개체를 생성하고 변경되지 않아야 프로그래밍의 부작용을 줄일 수 있을 때 사용합니다.

> public class Circle
. {
.     public int Radius { get; private set; } = 0;
.     public Circle(int radius) => Radius = radius;
.     public Circle MakeNew(int radius) => new Circle(radius);
. }
>
> //① 생성자로 반지름이 10인 circle 개체 생성
> Circle circle = new Circle(10);
> $"Radius : {circle.Radius} - {circle.GetHashCode()}"
"Radius : 10 - 62301924"
>
> //② 메서드로 반지름이 20인 circle 개체 생성
> circle = circle.MakeNew(20);
> $"Radius : {circle.Radius} - {circle.GetHashCode()}"
"Radius : 20 - 37804102"

처음에 생성자로 생성한 circle 개체는 반지름이 10으로 설정되어 더 이상 변경하지 않습니다. 이렇게 특정 개체가 가지는 속성을 생성한 후 변경하지 않도록 설정하면, 중간에 속성으로 값이 변경되어 개체가 잘못되는 것을 방지할 수 있습니다. 이 개체의 속성을 변경하려면 새로운 메서드로 새로운 개체를 만들어 사용합니다.

C#에서는 클래스가 여러 형태를 가질 수 있습니다. 이 강의에서는 그중 여러 파일에 클래스를 나누어서 관리할 수 있는 부분 클래스와 정적인 멤버로만 구성할 수 있는 정적 클래스를 다루어 보았습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.