Programming/.NET

ture와 false두가지 값을 갖는 bool형식을 생각해 봅시다. 어느 웹사이트에서 이벤트메일을 수신할 것인지를 지정하는 형식으로 다음과 같이 구현했다면

 

class Member
{
    public bool ReceiveMail
    {
        get;
        set;
    }
}

 

이것은 실제 문제가 될 수 있습니다. 왜냐하면 누군가가 메일수신여부를 아예 설정하지 않았다면 그것은 '네' 또는 '아니오'가 아닌 '미설정'이라는 중간 상태를 가지기 때문입니다. 하지만 bool형식에 중간값은 없으므로 이럴때 Nullable이 사용될 수 있습니다.

 

public Nullable<boolReceiveMail
{
    get;
    set;
}

 

Nullable은 null값을 가지게 하기 위한 것으로 본래는 Nullable<T>로 사용됩니다. 따라서 Nullable<int>와 같은 표현도 가능합니다.

 

Member m = new Member();

if (m.ReceiveMail.HasValue)
    Console.WriteLine(m.ReceiveMail.Value);

 

값을 확인하는 방법은 우선 HasValue속성으로 실제 값을 가지고 있는지를 먼저 확인한 후 Value속성을 통해 값을 가져오면 됩니다.

 

?는 Nullable의 요약된 표현입니다.

 

public boolReceiveMail
{
    get;
    set;
}

 

Nullable과 ?는 완전히 같은 역활을 하며 ?로 하면 실제 컴파일과정에서 코드가 Nullable로 바뀌게 됩니다.

'Programming > .NET' 카테고리의 다른 글

[C#] 시프트(Shift) 연산자  (0) 2019.03.05
[C#] 예외처리(try ~ catch)  (0) 2019.02.19
[C#] ? / Nullable  (0) 2019.02.12
[C#] partial  (0) 2019.02.07
[C#] 비동기 호출(asynchronous call)  (0) 2019.01.23
Debug / Release  (0) 2019.01.15
0 0