언어/C#

[DateTime] DateTime의 불변성과 대입 연산자

SharpSteamedBread 2026. 2. 23. 14:43

DateTime 구조체는 한 번 생성되면 내부의 값을 수정할 수 없다. 즉, DateTime을 이용하면 그 값의 복사본을 사용하게 된다. DateTime 내 AddDays(), AddHours()는 값을 직접 수정하는 게 아니라 새로운 객체를 생성하여 반환한다.

alarmTime.SetAlarmTime = alarmTime.SetAlarmTime.AddDays(1);

그래서 DateTime의 메서드를 이용하려면 대입 연산자로 값을 지정해주어야 한다.

 

alarmTime.SetAlarmTime.AddDays(1);

대입 연산자 없이 메서드만 호출한다면 계산은 진행되지만 값을 저장하지는 않는다.

 

그리고, 구조체는 값 타입이기 때문에 전달될 때마다 메모리에서 복사가 일어난다. 함수에 전달될 때 복사본이 전달되므로 원본은 변하지 않는다. 따라서 대입연산자로 새로운 값을 받아 대입해야 한다.