Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Nullable(널 허용) 형식 완벽 정리: 개념, 문법, 예제까지 한눈에

C# Nullable 형식이란?

C#에서 Nullable(널 허용) 형식은 해당 데이터 형식이 가질 수 있는 일반적인 값 범위에 더해, null 값까지 할당할 수 있도록 지원하는 특수한 데이터 형식입니다.

예를 들어, Nullable<int> 변수에는 -2,147,483,648부터 2,147,483,647 사이의 정숫값뿐만 아니라 null도 저장할 수 있습니다. 마찬가지로 Nullable<bool> 변수에는 true, false, 그리고 null 세 가지 값을 모두 할당할 수 있습니다.

이러한 기능은 데이터베이스의 필드처럼 '값이 없음'을 표현해야 하는 상황에서 특히 유용합니다.

Nullable 형식 선언 문법

Nullable 형식은 데이터 형식 뒤에 물음표(?)를 붙여 간단하게 선언할 수 있습니다.

<data_type>? <variable_name> = null;

선언 예시는 다음과 같습니다.

int? num1 = null;

Nullable 형식 활용 예제

다음은 다양한 Nullable 형식을 선언하고 값을 출력하는 전체 예제 코드입니다.

예제 코드

using System;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            int? num1 = null;
            int? num2 = 45;

            double? num3 = new double?();
            double? num4 = 3.14157;

            bool? boolval = new bool?();

            // 값 출력
            Console.WriteLine("Nullables at Show: {0}, {1}, {2}, {3}", num1, num2, num3, num4);
            Console.WriteLine("A Nullable boolean value: {0}", boolval);
            Console.ReadLine();
        }
    }
}

실행 결과

Nullables at Show: , 45, , 3.14157
A Nullable boolean value:

실행 결과에서 확인할 수 있듯이, null로 초기화된 변수는 아무것도 출력되지 않고, 값이 할당된 변수(num2, num4)는 정상적으로 값이 출력됩니다.

Nullable 형식의 유용한 멤버와 연산자

Nullable 형식은 다음과 같은 속성과 연산자를 제공하여 null 값을 더욱 안전하게 다룰 수 있게 해줍니다.

  • HasValue: 변수에 실제 값이 있는지 여부를 true/false로 반환합니다.
  • Value: 변수에 저장된 실제 값을 반환하며, 값이 없으면 예외가 발생합니다.
  • GetValueOrDefault(): 값이 없으면 해당 형식의 기본값(예: int의 경우 0)을 반환합니다.

또한 null 병합 연산자(??)를 사용하면 값이 null일 때 대체값을 간결하게 지정할 수 있습니다.

int? num = null;
int result = num ?? 10; // num이 null이므로 result는 10

마무리

C#의 Nullable 형식은 값형(int, double, bool 등)에 null을 허용함으로써, 데이터가 존재하지 않는 상황을 명확하게 표현할 수 있게 해주는 강력한 기능입니다. HasValue, GetValueOrDefault(), ?? 연산자를 함께 활용하면 null 관련 오류를 예방하고 더 안전한 코드를 작성할 수 있습니다.