nullable 형식(C# 프로그래밍 가이드)

nullable 형식은 System.Nullable<T> 구조체의 인스턴스입니다. nullable 형식은 내부 값 형식의 올바른 값 범위뿐 아니라 null 값도 나타낼 수 있습니다. 예를 들어 Nullable<Int32>("Int32의 nullable"이라고 읽음)에는 -2147483648에서 2147483647까지의 모든 값을 할당하거나 null 값을 할당할 수 있습니다. Nullable<bool>에는 true, false 또는 null 값을 할당할 수 있습니다. 숫자 및 부울 형식에 null 값을 할당할 수 있는 기능은 특히 값이 할당되지 않을 수 있는 요소를 포함하는 데이터베이스 및 기타 데이터 형식을 다룰 때 유용합니다. 예를 들어 데이터베이스의 Boolean 필드는 true 또는 false 값을 저장할 수도 있고, 정의되지 않을 수도 있습니다.

class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

이 예제는 다음 출력을 표시합니다.

num = Null

Nullable object must have a value.

추가 예제는 Nullable 형식 사용(C# 프로그래밍 가이드)를 참조하십시오.

nullable 형식 개요

nullable 형식에는 다음과 같은 특징이 있습니다.

  • nullable 형식은 null 값을 할당할 수 있는 값 형식 변수를 나타냅니다. 참조 형식을 기반으로 nullable 형식을 만들 수는 없습니다. 참조 형식에서는 이미 null 값을 지원합니다.

  • T? 구문은 Nullable<T>의 축약형이고, 여기서 T는 값 형식입니다. 이러한 두 가지 형태는 서로 바꿔 사용할 수 있습니다.

  • nullable 형식에는 일반 값 형식과 같은 방법으로 값을 할당합니다. 예를 들면 int? x = 10; 또는 double? d = 4.108과 같습니다. Nullable 형식은 null: int? x = null. 값을 할당할 수도 있습니다.

  • Nullable<T>.GetValueOrDefault 메서드를 사용하여 할당된 값을 반환하거나 값이 null인 경우 내부 형식의 기본값을 반환합니다. 예를 들면 int j = x.GetValueOrDefault();와 같습니다.

  • HasValueValue 읽기 전용 속성을 사용하여 Null에 대해 테스트하고 값을 검색합니다(예제 if(x.HasValue) j = x.Value; 참조).

    • HasValue 속성은 변수에 값이 포함되어 있을 경우 true를 반환하고, 변수가 null이면 false를 반환합니다.

    • 할당된 값이 있으면 Value 속성은 값을 반환합니다. 그렇지 않으면 System.InvalidOperationException이 throw됩니다.

    • HasValue의 기본값은 false입니다. Value 속성에는 기본값이 없습니다.

    • == and != 연산자를 Nullable 형식으로 사용할 수도 있습니다(예제 if (x != null) y = x; 참조).

  • ?? 연산자를 사용하여 현재 값이 null인 nullable 형식을 nullable이 아닌 형식에 할당할 때 적용될 기본값을 할당합니다. 예를 들면 int? x = null; int y = x ?? -1;과 같습니다.

  • 중첩된 nullable 형식은 허용되지 않습니다. Nullable<Nullable<int>> n;과 같은 줄은 컴파일되지 않습니다.

관련 단원

자세한 내용은 다음을 참조하십시오.

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하십시오. 이 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.

참고 항목

참조

Nullable

개념

C# 프로그래밍 가이드

기타 리소스

Visual C#

C# 참조

What exactly does 'lifted' mean?