본문 바로가기
Study/C#

[C#] required, Nullable 파헤치기(feat. 거슬리는 초록 밑줄)

by 스테디코디스트 2023. 12. 8.
반응형
✍️vs2022로 c# 코드 작성 중 아래와 같이 단순한 배열 선언에 초록색 밑줄이 나오길래 거슬려서 확인해 보았다.

 

※ 커서를 가져다 대본 결과 위와 같은 문구가 나왔고, 이 거슬리는 밑줄을 없애기 위해선 두 가지 방법이 있었다.

1. required 키워드 사용

2. Nullable로 선언

 

 밑줄의 원인은 설명에 써 있는 것과 같이 해당 배열의 값이 null이 올 수 있는지 아닌지가 확실하지 않아서 나오는 경고 였고. C# 11 이상의 버전에서만 보이는 경고 문구였다.

 따라서 배열에 값이 null이 올 수 없게 하려면 required 키워드와 함께 선언하는 첫 번째 방법을 사용하면 되고, null이 올 수 있도록 하려면 두 번째 방법인 Nullable로 선언하면 된다.

 

 위는 required와 Nullabe의 사용예시인데, 좌측의 required는 null이 올 수 없으므로 항상 값이 들어 있어야 하기 때문에 값을 할당하지 않아 오류 밑줄이 뜨게되는 반면, 우측의 Nullable은 값이 null이 될 수 있기 때문에 값을 할당해주지 않아도 오류가 발생하지 않는 것을 볼 수 있다.

 

💡해결 방안

1. [SetsRequiredMembers]을 이용하여 생성자를 선언하고, 해당 생성자에서 required로 선언된 변수를 할당해준다.

2. Object Initializer를 이용해 required로 선언된 변수를 초기화 한 뒤 사용한다.