.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부터 사용 가능하다.