본문 바로가기
개발/C#

C# - null 병합 연산자에 대해서(?? 연산자)

by E-nan 2020. 5. 27.
728x90
반응형

안녕하세요. 2nan 입니다.

 

 

저번 C# 포스팅에서 변수선언시 변수타입 뒤에 ?가 붙은

Nullable변수에 대해서 살펴보았습니다.

2020/04/07 - [개발/C#] - C# Nullable 에 대해서(변수타입 뒤에 물음표)

 

C# Nullable 에 대해서(변수타입 뒤에 물음표)

안녕하세요. E-nan 입니다. 구글링을 하던중 다른사람이 쓴 코드에서 변수타입 뒤에 ? 가 붙은 변수를 본적이 있습니다. 이게 뭐지..? 하고 구글에 "? 연산자"를 검색했더니 제대로 결과가 나오지 ��

2-nan.tistory.com

 

오늘은 변수타입 뒤에 물음표가 아닌 ?? 연산자에 대해서 소개시켜드리려 합니다.

먼저 코드로 예를 살펴보겠습니다.

 

var A = "A";
var B = "B";

return A ?? B;

 

이런 경우에 어떤 값이 return이 되는걸까요??

먼저 ?? 연산자는 null 병합 연산자 라고 불립니다.

 

null 병합 연산자 ?? 는 왼쪽 피연산자가 null이 아니라면 왼쪽 피연산자의 값을 반환합니다.

즉 위에 경우에는 A가 null이 아니라면 왼쪽 피연산자인 A를 반환,

A가 null이라면 오른쪽 피연산자인 B를 반환합니다.

 

현재 변수 A에는 "A"라는 값이 할당되어있으니, 변수 A가 가진 값이 반환이 되겠죠??

하지만 만약 변수 A가 null값을 가지고 있다면 변수 B가 가진 값이 반환이 될겁니다.

 

익숙한 if문으로 간단하게 풀어서 써보면 이렇게 풀어볼 수 있겠네요.

if(A != null)
{
	return A;
}
else
{
	return B;
}

?? 연산자를 알아두면, 위의 if문보다 훨씬 간단하게 코드를 작성할 수 있겠네요.

 

그렇다면 이런 경우엔 어떻게 될까요??

var A = "A";
var B = "B";
var C = "C";

return A ?? B ?? C;

 

null 병합 연산자는 오른쪽 결합이기 때문에,

A ?? B ?? C 의 경우는 A ?? (B ?? C) 의 형태로 계산된다고 합니다.

 

즉, 위 코드의 결과는 A가 반환되고,

A만 null일 경우에는 B가 반환,

A와 B가 null일 경우에는 C가 반환됩니다.

 

이번에도 이해하기 쉽게 if문으로 풀어보겠습니다.

if(A != null)
{
	return A;
}
else
{
	if(B != null)
    {
    	return B;
    }
    else
    {
    	return C;
    }
}

 

if문으로 사용해야 했던 코드를

한줄로 확! 줄여주니 앞으로 자주 쓰게 될 것 같습니다. ㅎㅎ

 

더 자세하게 알고 싶으신 분들은 아래 공식 사이트에 방문해 보시기 바랍니다.

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/null-coalescing-operator

 

?? 및 ??= 연산자 - C# 참조

???? 및 ??= 연산자(C# 참조)and ??= operators (C# reference) 이 문서의 내용 --> null 병합 연산자 ??는 null이 아닌 경우 왼쪽 피연산자의 값을 반환합니다. 그렇지 않으면 오른쪽 피연자를 평가하고 그 결과��

docs.microsoft.com

 

 

공감이나 도움이 되셨다면, 공감버튼을 눌러주세요ㅎㅎ

질문이나 오타, 잘못된 내용 등은 댓글로 남겨주시면 감사하겠습니다 :)

728x90
반응형

댓글