본문 바로가기

C#

[C#] init 접근자 란?

여러분이 장난감을 처음 받았을 때 넣을 수 있는 상자가 있습니다. 그러나 장난감을 한 번 넣고 나면 다른 것으로 바꿀 수 없어요.

 

C# 프로그래밍에서는 "init 접근자"라는 것이 있어요. 프로그래머가 프로그램의 일부를 "init 접근자"를 사용하여 만들면 처음 만들 때만 설정할 수 있고, 그 후에는 변경할 수 없습니다.


C#에서 init 키워드는 속성과 인덱서에 대한 "init 접근자"를 정의하는 데 사용됩니다. 이 기능은 C# 9에서 도입되었으며 주로 불변 객체를 만드는 데 사용됩니다. 불변성은 객체가 생성된 후에는 상태를 수정할 수 없다는 것을 의미합니다.

init 접근자는 set 접근자와 비슷하지만, 객체 초기화 단계에 속성 수정을 제한합니다. 즉, 객체를 처음 만들 때 객체 초기화자를 사용하여 속성 값을 설정할 수 있지만, 객체의 생성자가 완료되면 이러한 속성은 읽기 전용이 되어 변경할 수 없습니다.

예를 들어, Person 클래스가 있고 FirstName 속성을 불변으로 만들고 싶다면 C#에서 다음과 같이 정의할 수 있습니다.

public class Person
{
    public string FirstName { get; init; }
}

 

이제 새 Person 객체를 생성할 때 FirstName을 초기화할 수 있습니다

var person = new Person
{
    FirstName = "John"
};

 

그러나 이 초기 설정 후에 FirstName을 변경하려고 하면 컴파일 시간 오류가 발생합니다

person.FirstName = "Jane"; // 컴파일러 오류가 발생합니다.

 

init 접근자는 객체 속성을 생성자를 통해 설정하는 것보다 깔끔하고 간결한 객체 초기화자를 사용하면서도 불변 데이터를 처리할 수 있는 방법을 제공합니다. 객체 속성은 생성 시 설정되어야 하지만 그 이후에는 변경되지 않아야 하는 시나리오에서 특히 유용합니다.

'C#' 카테고리의 다른 글

[C#] 프로젝트 참조와 싱글톤 패턴의 차이  (0) 2024.06.02
[C#] Partial 메소드 란?  (0) 2024.05.09
[C#] BackgroundWorker와 Thread 차이  (0) 2024.04.17
[C#] Sealed 클래스  (0) 2024.04.15
[C#] BackgroundWorker 클래스  (0) 2024.04.11