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