[C# 문법] C# Null 관련 연산자(??, .? 기호)

안녕하세요.

 

오늘은 C# 문법에서 Null 관련 연산자에 대해서 공부해 보려고 합니다.

 

C#에서 크게 Null 관련 제공해주는 연산자는, 널 집합 연산자와 널 조건 연산자 2가지가 있습니다.

 

오늘은 이 2가지의 널 관련 연산자 사용 방법에 대해서 공부해 보려고 합니다.

 

Null 집합 연산자

-     Null 집합 연산자는 ?? 이 기호로 표시합니다.

뜻은 왼쪽 피연산자가 널이 아니면 그 피연산자로 평가하고, 만약 Null 이라면 오른쪽 피연산자로 평가한다는 의미 인데요.

 

소스코드로는 아래와 같이 쓸 수 있습니다.

 

예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
 
namespace polyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = null;
            string str2 = str1 ?? "없음"//s2는 없음으로 출력
 
            Console.WriteLine($"str1 : {str1} , str2 : {str2}");
        }
    }
}
 
cs

 

실행 결과

 

위와 같이 현재 str1 의 값이 null 이기 때문에 ?? 연산자를 통해 str2의 값은 없음이라는 문자열이 저장되고 출력된 것을 확인하실 수 있습니다.

 

Null 조건부 연산자

-     Null 조건부 연산자는 C# 6.0 버전에 새롭게 추가된 내용으로써, ?. 이렇게 기호로 표시할 수 있습니다. 이 연산자를 이용하면 표준적인 마침표 연산자를 이용해서 메서드를 호출하거나 멤버에 접근할 때 피 연산자가 Null 인지 따로 체크할 필요가 없고, NullReferenceException 예외도 발생하지않습니다.

 

그럼 예제를 통해서 어떻게 사용하는지 보여 드리도록 하겠습니다.

 

예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
 
namespace polyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = null;
            string str2 = str1?.ToString(); //위와 같이 ?. 기호를 사용하면 str2에 null이 저장됩니다.
 
            Console.WriteLine($"str2 : {str2}");
 
 
            string str3 = null;
            string str4 = str3?.ToString() ?? "없음";
 
            Console.WriteLine($"str3 : {str3}, str4 : {str4}");
        }
    }
}
 
cs

 

실행 결과

 

위와 같이 ?. 기호를 통해서 변수들을 선언하고 값을 출력해 보았습니다.

 

감사합니다.^^

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY