무효 클릭 IP 추적 중...
c#

[c# ] 필드 | 프러퍼티 앞에 붙어 있는 required는 뭘까?

꼬예 2023. 3. 13.

필드나 프러퍼티에 [ic]required[/ic]라고 붙어 있는걸 본적 있을거다.

required가 붙어있는 예

 

이들의 정체는 무엇일까?

 

이 키워드는 c# 11에서 새로 도입 된 키워드로 필수 한정자라 불린다.

 

이해를 돕기 위해 필수 한정자(required modifier)를 쓴 경우/안 쓴경우 어떤 차이가 있는지 알아보자. 

 

필수 한정자 안 쓴 경우

class Person
{
    public string Name; // 필드
    public int Age { get; set; } // 속성
}

var p = new Person { Name = "Alice", Age = 20 };
Console.WriteLine(p.Name); //Alice

 

위 코드에서 [ic]Age[/ic]값을 할당 안한다면 어떻게 될까?

var p = new Person { Name = "Alice"};

Console.WriteLine(p.Name); //Alice

문제 없이 정상 작동한다.

 

하지만 필수 한정자를 쓸 경우 어떤 차이가 있을까?

 

필수 한정자 쓸 경우

예제에서는 [ic]Age[/ic] 속성에 required를 적용하였다.

class Person
{
    public string Name; // 필드
    public required int Age { get; set; } // 속성
}

 

이번에도 마찬가지로 Age를 할당하지 않고 객체를 생성해보겠다.

var p = new Person { Name = "Alice"};

Console.WriteLine(p.Name);

 

이번에는 컴파일단에서 에러가 발생된다.

(컴파일 타임과 런타임의 차이가 궁금하다면?)

컴파일단에서 발생되는 에러

 

즉 정리하자면 필수 한정자를 통해 객체 생성시 반드시 넣어야할 값을 강제할 수 있다.

 

이 글과 읽으면 좋은글

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글