C#

널러블(Nullable)

코다람쥐 2022. 1. 26. 16:38

1. Nullable

int형에 대해 null값을 넣고 싶은 경우가 있다.

0을 null값으로 생각해봐도 되는거 아니냐고 반문할 수 있지만 만약 0마저도 사용해야 하는 경우가 생길 때 사용하는 것이 널러블이다.

 

선언

int? n = null;

 

사용방법

        static int Find()
        {
            return 0;
        }
        static void Main(string[] args)
        {
            int? n = null;

            n = 3;

            // int a = n; 구문오류
            int a = n.Value;
        }

그리고 알아야할 점은 int형과 int?형은 서로 다른 형식이라는 점이다.

그래서 int?형의 값을 int형에 대입할 때는 Value를 사용한다.

 

주의할 점

 int?형식에 null값이 들어간 경우 Value를 int형에 넘겨주게 되면 오류가 발생한다.

            if(n != null)
            {
                int a = n.Value;
            }

            if(n.HasValue)
            {
                int a = n.Value;
            }

그래서 위와 같은 방법으로 사용한다. 두 if문의 차이점은 딱히 없다.

 

또 다른 사용방법

            int b = n ?? 3;

위 코드의 의미는 삼항연산자를 대입해서 생각하면 쉽다.

            int b = (n != null) ? n.Value : 3;

null값이 아니라면 n.Value값을 대입하고 null이면 3을 넣는다는 뜻이다.