nullable 형식(C# 프로그래밍 가이드)Nullable types (C# Programming Guide)

Nullable 형식은 System.Nullable<T> 구조체의 인스턴스입니다.Nullable types are instances of the System.Nullable<T> struct. nullable 형식은 기본 형식 T의 모든 값과 추가 null 값을 나타낼 수 있습니다.Nullable types can represent all the values of an underlying type T, and an additional null value. 기본 형식 T는 nullable이 아닌 값 형식일 수 있습니다.The underlying type T can be any non-nullable value type. T는 참조 형식이 아닙니다.T cannot be a reference type.

예를 들어 Int32.MinValue부터 Int32.MaxValue까지의 null 또는 정수 값을 Nullable<int>에 할당하고, true, false 또는 nullNullable<bool>에 할당할 수 있습니다For example, you can assign null or any integer value from Int32.MinValue to Int32.MaxValue to a Nullable<int> and true, false, or null to a Nullable<bool>.

기본 형식의 정의되지 않은 값을 표시해야 하는 경우 nullable 형식을 사용합니다.You use a nullable type when you need to represent the undefined value of an underlying type. 부울 변수에는 true와 false라는 두 개의 값만 있을 수 있습니다.A Boolean variable can have only two values: true and false. "정의되지 않은" 값이 없습니다.There is no "undefined" value. 많은 프로그래밍 애플리케이션(특히, 데이터베이스 상호 작용)에서 변수는 정의되지 않거나 누락될 수 있습니다.In many programming applications, most notably database interactions, a variable value can be undefined or missing. 예를 들어 데이터베이스의 필드는 true 또는 false 값을 포함하거나 값을 전혀 포함하지 않을 수 있습니다.For example, a field in a database may contain the values true or false, or it may contain no value at all. 해당 경우에 Nullable<bool> 형식을 사용합니다.You use a Nullable<bool> type in that case.

null 허용 형식은 다음 특성을 갖습니다.Nullable types have the following characteristics:

  • nullable 형식은 null 값이 할당될 수 있는 값-형식 변수를 나타냅니다.Nullable types represent value-type variables that can be assigned the null value. 참조 형식에 따라 null 허용 형식을 만들 수 없습니다.You cannot create a nullable type based on a reference type. (참조 형식은 null 값을 이미 지원합니다.)(Reference types already support the null value.)

  • T? 구문은 Nullable<T>의 축약형입니다.The syntax T? is shorthand for Nullable<T>. 두 가지 형태는 동일하게 사용할 수 있습니다.The two forms are interchangeable.

  • 일반 값 형식의 경우처럼 nullable 형식에 값을 할당합니다(int? x = 10; 또는 double? d = 4.108;).Assign a value to a nullable type just as you would for an underlying value type: int? x = 10; or double? d = 4.108;. null 값을 할당할 수도 있습니다(int? x = null;).You also can assign the null value: int? x = null;.

  • 다음 예제와 같이 Nullable<T>.HasValueNullable<T>.Value 읽기 전용 속성을 사용하여 null인지 테스트하고 값을 검색합니다. if (x.HasValue) y = x.Value;Use the Nullable<T>.HasValue and Nullable<T>.Value readonly properties to test for null and retrieve the value, as shown in the following example: if (x.HasValue) y = x.Value;

  • 다음 예제와 같이 nullable 형식에서 ==!= 연산자를 사용할 수도 있습니다. if (x != null) y = x.Value;You can also use the == and != operators with a nullable type, as shown in the following example: if (x != null) y = x.Value;. ab가 둘 다 null인 경우 a == btrue로 평가합니다.If a and b are both null, a == b evaluates to true.

  • C# 7.0부터는 패턴 일치를 사용하여 nullable 형식의 값을 검사하고 가져올 수 있습니다(if (x is int valueOfX) y = valueOfX;).Beginning with C# 7.0, you can use pattern matching to both examine and get a value of a nullable type: if (x is int valueOfX) y = valueOfX;.

  • 기본값인 T?HasValue 속성이 false를 반환하는 인스턴스입니다.The default value of T? is an instance whose HasValue property returns false.

  • nullable 형식 값이 null인 경우 GetValueOrDefault() 메서드를 사용하여 할당된 값 또는 기본 값 형식의 기본값 중 하나를 반환합니다.Use the GetValueOrDefault() method to return either the assigned value, or the default value of the underlying value type if the value of the nullable type is null.

  • nullable 형식 값이 null인 경우 GetValueOrDefault(T) 메서드를 사용하여 할당된 값 또는 제공된 기본값 중 하나를 반환합니다.Use the GetValueOrDefault(T) method to return either the assigned value, or the provided default value if the value of the nullable type is null.

  • null 결합 연산자??를 사용하여 nullable 형식의 값을 기반으로 하는 기본 형식에 값을 할당합니다. int? x = null; int y = x ?? -1;Use the null-coalescing operator, ??, to assign a value to an underlying type based on a value of the nullable type: int? x = null; int y = x ?? -1;. 예제에서 x가 null이므로 결과 값인 y-1입니다.In the example, since x is null, the result value of y is -1.

  • 두 데이터 형식 간에 사용자 정의 변환이 정의된 경우 이러한 데이터 형식의 nullable 버전에도 같은 변환을 사용할 수 있습니다.If a user-defined conversion is defined between two data types, the same conversion can also be used with the nullable versions of these data types.

  • 중첩된 null 허용 형식은 허용되지 않습니다.Nested nullable types are not allowed. 다음 줄은 컴파일되지 않습니다. Nullable<Nullable<int>> n;The following line doesn't compile: Nullable<Nullable<int>> n;

자세한 내용은 Nullable 형식 사용방법: Nullable 형식 식별 항목을 참조하세요.For more information, see the Using nullable types and How to: Identify a nullable type topics.

참고 항목See also