.NET/Common

C# 문법 Null Safety

atawlee 2022. 9. 17. 21:52

C# NULL Safety

C# 8.0에서는 다음과 같은 Nullsafety 연산자를 지원한다.

NULL 대체할당

var nullstring = null;
nullstring ??= "null일경우 대체할 스트링"

이 문법을 사용하면 다음과 같이 Null check하고 할당하는 코드를 단 한줄로 줄일 수 있다.

if(nullstring == null)
{
    nullstring = "null일경우 대체할 스트링";
}

null safety 연산자를 해석하면 다음과 같다.

  • A??=B ; A(좌측변수)가 널이라면 B(우측변수)를 A에 할당한다

NULL 대체

NULL값이 들어있는 변수를 대체하는 연산자는 ?? 이다.

var nullstring = null;
Console.WriteLine(nullstring?? "출력값은 A입니다." );

??연산자의 좌측값이 NULL일 경우 ??연산자의 우측값으로 대체한다.

Exception

대체하지 않고 Exception을 떨어뜨리는 경우 다음과 같이 사용한다.

nullstring?? throw new Exception("nullstring은 null 입니다.");

인스턴스가 null 인경우 멤버 대신 null을 할당

    class Human
    {
        public string name = "";
    }

    private static void Main(string[] args)
    {
        Human human = null;

        string test = human.name;
    }

위 코드는 test 할당에서 human이 null 이기 때문에 null Reference Exception을 발생시킨다.

만약 test값이 null이 되어도 상관이 없는 값이라면 human.name 대신 null을 할당하면 된다. 그런경우 다음과 같이 사용한다.

string test = human?.name;

?. 연산자의 좌측이 null 이라면 존재하지 않는 human.name 을 찾는 것이 아니라 null을 대신 반환한다.


이렇게 NULL Check Code를 심플하게 만들어줄수 있다. C# 8.0은 VS2017부터 사용 가능하다.