C# 9.0에 도입된 init 키워드
추천 자료: ASP.NET Core 인증 및 권한 부여
init
키워드
C# 9에서 도입된 init
키워드는 개체 초기화 시에만 속성 값을 설정할 수 있도록 제한하는 기능을 제공합니다. 이를 사용하면 개체가 생성된 후 속성이 변경되지 않도록 보장할 수 있습니다.
코드: InitDemo.cs
using static System.Console;
public class PersonInit
{
public string? Name { get; init; } // Name은 개체 초기화 시에만 설정 가능
public int Age { get; init; } // Age는 개체 초기화 시에만 설정 가능
public string? Address { get; set; } // Address는 개체 생성 후에도 변경 가능
}
class InitDemo
{
static void Main()
{
// 개체 초기화 시 속성 값 설정 가능
var person = new PersonInit { Name = "홍길동", Age = 30, Address = "서울" };
WriteLine($"이름: {person.Name}, 나이: {person.Age}, 주소: {person.Address}");
// 개체가 생성된 후에도 Address 속성 값 변경 가능
person.Address = "부산";
WriteLine($"변경된 주소: {person.Address}");
// 개체가 생성된 후에는 init 속성 값 변경 불가능 (컴파일 오류 발생)
// person.Age = 35; // 오류: 'init' 속성은 초기화 이후 변경할 수 없음
}
}
이름: 홍길동, 나이: 30, 주소: 서울
변경된 주소: 부산
이 예제에서 PersonInit
클래스는 Name
과 Age
속성의 set
접근자를 init
으로 설정하여 개체가 생성될 때만 값을 설정할 수 있도록 하였습니다. 반면 Address
속성은 set
접근자를 사용하여 개체가 생성된 이후에도 변경할 수 있습니다. InitDemo
클래스의 Main
메서드에서 PersonInit
개체를 초기화한 후, Address
속성은 변경할 수 있지만 Name
과 Age
속성은 변경할 수 없습니다. 이를 통해 불변 속성과 변경 가능한 속성을 분리하여 안전한 데이터 모델을 구축할 수 있습니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!