[C#] CS8370 'nullable 참조 형식' error

2023. 11. 16. 10:59카테고리 없음

C#을 스터디 하면서 "까불이코더"님의 유튜브 채널을 보며 많은 도움을 받고 있는데,
 
강좌를 따라하던 중에 Visual Studio에서 다음과 같은 에러를 뱉어냈다. 뭐?! 왜?!
 
개발환경은 Visual Studio2022, .Net Framework 4.8을 사용한다.
 

- [C#] CS8370 error -


해당 'nullable 참조 형식'C# 6.0부터 추가된 기능으로 [끝나지 않는 프로그래밍 일기] 에서 자세히 확인해 볼 수 있다.
 

// 호드마법사를 생성하고
WowCharacter HordeWizard = new WowCharacter
// 호드마법사가 Null이 아니면
if ( HordeWizard != null )
{
	// 움직여!
	HordeWizard.Move();
}

 
즉,  객체의 메서드나 속성을 사용하기 전에 NULL 여부를 체크하는 경우가 많은데,
C# 6.0 부터는 이러한 불편을 덜어주기 위하여  "널 조건 연산자 (Null-conditional operator)"를 새로 추가하였다.
(왜?...난 직관적인게 좋은데;;;; 번역은 별로;;;;)
널 조건 연산자는 ? 앞에 있는 객체가 NULL인지 체크해서 NULL이면 그냥 NULL을 리턴하고, 그렇지 않으면 ? 다음의 속성이나 메서드를 실행한다.
위의 코드는 아래의 형식으로 간단하게 바뀐다.
 

// 호드 위자드가 Null이 아니면 움직여!(Move)
WowCharacter? HordeWizard?.Move();
// 호드를 위하여!

 


 다시, 원래의 error로 돌아가서, 'CS8370 'nullable 참조 형식' 기능은 C# 7.3에서 사용할 수 없습니다. 8.0 이상의 언어 버전을 사용하세요'는 Visual Studio가 C# 버전을 잘 맞춰달라고 친절하게 말해주는 것이다.
 
지금 사용하고 있는 C# 버전을 확인하기 위해 '프로젝트 속성'에 들어가보자.
 

- "프로젝트"에서 '속성'에 들어가야한다. "솔루션"에서 들어가면 엉뚱한 화면이 열린다.-

 프로젝트에서 우클릭, "속성(R)"을 클릭해서 속성화면을 열어 [빌드] 탭을 선택하자.
 

- 나는 "언어 버전"을 선택하고 싶다! -

 
[고급] 버튼을 클릭해서 "고급 빌드 설정" 화면을 열어 "언어 버전"을 확인/변경하려 했으나, 나는 안된단다!(왜!)
다행이? MS에서 친절하게도 "다른 C# 버전을 선택할 수 없는 이유는 무엇인가요?" 를 클릭하게 하여 MSDN(요즘은 LEARN인가?)에서 해당 건을 확인해 볼 수 있게 해 주었다. 클릭해 보자.
 

- 필요하면 니가 고쳐! -

 
"필요하면 니가 고쳐!" 라고 한다. 그럼 고치는 법은? 스크롤을 조금 내려보면 "프로젝트 파일 편집" 부분을 찾을 수 있다.
 

- 프로젝트 파일 편집 -

 
뭐... 시키는 대로 해야지. 프로젝트 파일을 메모장으로 열어보자.
 

- .csproj 파일을 수정해준다. -

 
프로젝트 파일(. csproj)을 열어 <PropertyGroup><LangVersion> lastest <LangVersion>을 추가/저장해주고, 솔루션을 다시 열어주자.
<LangVersion> lastest <LangVersion> 옵션값은 아래와 같으며 더 자세한 사항은 여기를 참고하자.
 

- C# 언어 버전 참조 -

 

- CS8370 에러는 제거됐다! -

 
다른 에러와 경고가 발생은 했으나, CS8370에러는 발생하지 않음을 확인해 볼 수 있다.
이제 또 하나씩 잡아가 봐야지...