[c#] 뮤터블 객체와 이뮤터블 객체의 차이점

소프트웨어 개발에서 뮤터블 객체(mutable objects)와 이뮤터블 객체(immutable objects)는 중요한 개념입니다. 이들은 객체의 상태 변경과 관련이 있으며, 이해하고 적절히 활용함으로써 코드의 안정성과 성능을 향상시킬 수 있습니다.

뮤터블 객체

뮤터블 객체는 생성된 이후에 내부 상태를 변경할 수 있는 객체를 말합니다. 이것은 객체의 속성이나 값이 변경될 수 있다는 점을 의미합니다. 예를 들어, C#에서의 List나 Dictionary는 뮤터블 객체의 예로 볼 수 있습니다.

List<string> mutableList = new List<string>();
mutableList.Add("item1");
mutableList.Add("item2");

위의 예제에서 mutableList는 계속해서 변경이 가능한 객체입니다. 따라서, 언제든지 새로운 아이템을 추가하거나 삭제할 수 있습니다.

이뮤터블 객체

반면에, 이뮤터블 객체는 생성된 이후에 내부 상태를 변경할 수 없는 객체를 의미합니다. 이것은 객체의 속성이나 값이 변경될 수 없다는 점을 말합니다. 예를 들어, C#에서의 string은 이뮤터블 객체의 예로 볼 수 있습니다.

string immutableString = "hello";
immutableString = immutableString.ToUpper(); // 이 코드는 새로운 문자열을 생성합니다.

위의 예제에서 immutableString은 한 번 생성된 이후에 내부 상태를 변경할 수 없습니다. 따라서, ToUpper 메서드를 호출하더라도 기존의 문자열을 변경하는 것이 아니라 새로운 문자열을 생성합니다.

결론

뮤터블 객체와 이뮤터블 객체는 객체의 상태 변경에 대한 다른 접근 방식을 보여줍니다. 이뮤터블 객체는 안전하고 예측 가능한 코드를 작성하는 데 도움이 되며, 병행성 및 성능 개선에도 도움이 될 수 있습니다. 그러나 뮤터블 객체도 적절하게 활용되면 유용하게 사용될 수 있습니다.

따라서, 개발자는 코드를 작성할 때 객체의 뮤터블/이뮤터블 속성을 고려하여 적절한 선택을 할 필요가 있습니다.

참고 자료