문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

Nullable<T> 구조체

참조 형식처럼 null도 할당될 수 있는 값 형식을 내부 형식으로 갖는 개체를 나타냅니다.

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

[SerializableAttribute]
public struct Nullable<T>
where T : struct, new()

Type 매개 변수

T

Nullable<T> 제네릭 형식의 내부 값 형식입니다.

Nullable<T> 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifNullable<T> Nullable<T> 구조체의 새 인스턴스를 지정된 값으로 초기화합니다.
위쪽

  이름설명
Public 속성XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifHasValue현재 Nullable<T> 개체에 값이 있는지 여부를 나타내는 값을 가져옵니다.
Public 속성XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifValue현재 Nullable<T> 값을 가져옵니다.
위쪽

  이름설명
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifEquals현재 Nullable<T> 개체가 지정된 개체와 같은지 여부를 나타냅니다. (ValueType.Equals(Object)을(를) 재정의함)
Protected 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifFinalize가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifGetHashCode Value 속성에서 반환하는 개체의 해시 코드를 검색합니다. (ValueType.GetHashCode()을(를) 재정의함)
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifGetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifGetValueOrDefault()현재 Nullable<T> 개체의 값이나 개체의 기본값을 검색합니다.
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifGetValueOrDefault(T)현재 Nullable<T> 개체의 값이나 지정된 기본값을 검색합니다.
Protected 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifMemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifToString현재 Nullable<T> 개체 값의 텍스트 표현을 반환합니다. (ValueType.ToString()을(를) 재정의함)
위쪽

  이름설명
Public 연산자정적 멤버XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifExplicit(Nullable<T> to T)지정된 Nullable<T> 값의 값을 반환합니다.
Public 연산자정적 멤버XNA Framework에서 지원b3h38hb0.PortableClassLibrary(ko-kr,VS.100).gifImplicit(T to Nullable<T>)지정된 값으로 초기화된 새 Nullable<T> 개체를 만듭니다.
위쪽

값이 할당될 수 있거나, 값이 없음을 의미하는 null이 할당될 수 있는 형식을 nullable 형식이라고 합니다. 따라서 nullable 형식은 값을 나타내거나 값이 없음을 나타낼 수 있습니다. 예를 들어, String과 같은 참조 형식은 nullable 형식이지만 Int32와 같은 값 형식은 nullable 형식이 아닙니다. 값 형식은 형식에 적절한 값만 표현할 수 있는 용량을 갖기 때문에 nullable 형식이 될 수 없습니다. 값 형식에는 null 값을 표현하는 데 필요한 추가 용량이 없습니다.

참조 형식은 nullable 형식으로 디자인되었으므로 Nullable<T> 구조체에서는 값 형식만 nullable 형식으로 사용할 수 있습니다.

Nullable 클래스에서는 Nullable<T> 구조체에 대한 보완적인 지원을 제공합니다. Nullable 클래스를 통해 nullable 형식의 내부 형식을 사용할 수 있으며, 내부 값 형식이 제네릭 비교 및 같음 연산을 지원하지 않는 nullable 형식 쌍에서 비교 및 같음 연산을 수행할 수 있습니다.

시나리오

nullable 형식을 사용하여 상황에 따라 있거나 없는 항목을 나타냅니다. 예를 들어, HTML 태그의 선택적 특성은 한 태그에는 있지만 다른 태그에는 없을 수 있으며, 데이터베이스 테이블의 null을 허용하는 열은 테이블의 한 행에는 있지만 다른 행에는 없을 수 있습니다.

특성이나 열을 클래스의 필드로 나타낼 수 있으며 필드를 값 형식으로 정의할 수 있습니다. 필드는 특성이나 열에 유효한 모든 값을 포함할 수 있지만 특성이나 열이 없음을 의미하는 추가 값을 수용할 수 없습니다. 이 경우 값 형식 대신 nullable 형식으로 필드를 정의합니다.

기본 속성

Nullable<T> 구조체의 두 기본 멤버는 HasValueValue 속성입니다. Nullable<T> 개체의 HasValue 속성이 true이면 Value 속성을 사용하여 개체의 값에 액세스할 수 있습니다. HasValue 속성이 false이면 개체의 값이 정의되지 않으며 Value 속성에 액세스하려고 하면 InvalidOperationException이 throw됩니다.

boxing 및 unboxing

nullable 형식이 boxing될 때 공용 언어 런타임에서는 Nullable<T> 개체 자체가 아니라 Nullable<T> 개체의 내부 값을 자동으로 boxing합니다. 즉, HasValue 속성이 true이면 Value 속성의 내용이 boxing됩니다. nullable 형식의 내부 값이 unboxing될 때 공용 언어 런타임에서는 내부 값으로 초기화된 새 Nullable<T> 구조체를 만듭니다.

nullable 형식의 HasValue 속성이 false인 경우 boxing 작업 결과는 null입니다. 따라서 boxing된 nullable 형식이 개체 인수가 있어야 하는 메서드로 전달된 경우 이 메서드는 인수가 null인 경우를 처리할 수 있어야 합니다. null 이 nullable 형식으로 unboxing되면 공용 언어 런타임에서 새 Nullable<T> 구조체를 만들고 해당 HasValue 속성을 false로 초기화합니다.

다음 코드 예제에서는 Microsoft Pubs 샘플 데이터베이스에서 테이블의 세 행을 정의합니다. 테이블에는 null을 허용하지 않는 열 두 개와 null을 허용하는 열 두 개가 있습니다.


// This code example demonstrates the Nullable<T> class.
// The code example defines a database table in which two columns 
// are nullable. In the application, an array of rows is created 
// and initialized. The table rows could subsequently be 
// written to a database.

using System;

class Sample 
{
// Define the "titleAuthor" table of the Microsoft "pubs" database. 
    public struct titleAuthor 
    {
    // Author ID; format ###-##-####
    public string au_id;
    // Title ID; format AA####
    public string title_id;
    // Author ORD is nullable.
    public short? au_ord;
    // Royalty Percent is nullable.
    public int? royaltyper;
    }

    public static void Main() 
    {
// Declare and initialize the titleAuthor array.
    titleAuthor[] ta = new titleAuthor[3];
    ta[0].au_id = "712-32-1176";
    ta[0].title_id = "PS3333";
    ta[0].au_ord = 1;
    ta[0].royaltyper = 100;

    ta[1].au_id = "213-46-8915";
    ta[1].title_id = "BU1032";
    ta[1].au_ord = null;
    ta[1].royaltyper = null;

    ta[2].au_id = "672-71-3249";
    ta[2].title_id = "TC7777";
    ta[2].au_ord = null;
    ta[2].royaltyper = 40;

// Display the values of the titleAuthor array elements, and 
// display a legend.
    Display("Title Authors Table", ta);
    Console.WriteLine("Legend:");
    Console.WriteLine("An Author ORD of -1 means no value is defined.");
    Console.WriteLine("A Royalty % of 0 means no value is defined.");
    }

// Display the values of the titleAuthor array elements.
    public static void Display(string dspTitle, 
                               titleAuthor[] dspAllTitleAuthors)
    {
    Console.WriteLine("*** {0} ***", dspTitle);
    foreach (titleAuthor dspTA in dspAllTitleAuthors)
       {
       Console.WriteLine("Author ID ... {0}", dspTA.au_id);
       Console.WriteLine("Title ID .... {0}", dspTA.title_id);
       Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1);
       Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0);
       Console.WriteLine();       
       }
    }
}

/*
This code example produces the following results:

*** Title Authors Table ***
Author ID ... 712-32-1176
Title ID .... PS3333
Author ORD .. 1
Royalty % ... 100

Author ID ... 213-46-8915
Title ID .... BU1032
Author ORD .. -1
Royalty % ... 0

Author ID ... 672-71-3249
Title ID .... TC7777
Author ORD .. -1
Royalty % ... 40

Legend:
An Author ORD of -1 means no value is defined.
A Royalty % of 0 means no value is defined.

*/


.NET Framework

4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
표시: