2023. 11. 16. 10:59ㆍ카테고리 없음
C#을 스터디 하면서 "까불이코더"님의 유튜브 채널을 보며 많은 도움을 받고 있는데,
강좌를 따라하던 중에 Visual Studio에서 다음과 같은 에러를 뱉어냈다. 뭐?! 왜?!
개발환경은 Visual Studio2022, .Net Framework 4.8을 사용한다.
해당 '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)을 열어 <PropertyGroup>에 <LangVersion> lastest <LangVersion>을 추가/저장해주고, 솔루션을 다시 열어주자.
<LangVersion> lastest <LangVersion> 옵션값은 아래와 같으며 더 자세한 사항은 여기를 참고하자.
다른 에러와 경고가 발생은 했으나, CS8370에러는 발생하지 않음을 확인해 볼 수 있다.
이제 또 하나씩 잡아가 봐야지...