본문 바로가기
소소한 C# 지식

[C#]C# 8 이상 "CS8618" 경고 해결

by 해뤼맘 2022. 5. 17.
728x90
반응형

안녕하세요


얼마 전 Visual Studio 2022 최신 버전을 설치하면서
C#10을 사용하게 되었는데요(C#10은 .NET 6에 포함되어 2021년 11월에 출시되었습니다.)

기존에는 c#5를 사용하고 있어서
새로 개발할 때에 변경된 것들이 있어 불편하기도 하고
검색해도 잘 나오지 않기 때문에
앞으로 개발하면서 알아야 할 정보를 정리해 보려 합니다.

c# 8 에서는 NRT(nullable Reference Types)라는 새로운 기능이 도입되었습니다.
참조 형식에 주석을 추가할 수 있도록 하여 null을 포함하는 것이
유효한지의 여부를 나타 냅니다.

새로 생성되는 모든 프로젝트 템플릿은
프로젝트에 대하여 nullable 콘텍스트를 사용하도록 설정이 됩니다.

c# 컴파일러는 null을 포함하므로
초기화되지 않은 nullable이 아닌 속성에 대하여 경고를 합니다.

public string TEST {get; set;}

CS8618 : 생성자를 종료할 때 NULL을 허용하지 않는 속성 'TETST'에  NULL이 아닌 값을 포함해야 합니다.
속성을 NULL 허용으로 선언해 보세요 라는 경고가 발생합니다.

 

이러한 경고가 발생했을 경우 아래와 같은 방법들을 사용하면 됩니다.

public class NUllAbleTest
    {
        //방법1. TEST의 속성이 NULL일수 있음을 string? 처럼 명시 
        public string ? TEST { get; set; }

        //방법2. 초기값 지정
        public string TEST2 { get; set; } = "Default TEST2";

        //방법3. 생성자 바인딩
        public string TEST3 { get; set; }

        public NUllAbleTest(string test3)
        {
            TEST3 = test3;
        }
        
        //방법4. null-forgiving 연산자(!)를 사용하여 속성을 null로 초기화
        public string TEST4 { get; set; } = null!;
    }

 

이상 C#8 이상에서 CS8618 경고 해결 방법이었습니다.

728x90
반응형

댓글