C#/C#200제

[C#] 6일차 - 38. Nullable형

반나무 2021. 1. 21. 15:04

사용방법

Nullable<T> i = null; // T는 자료형

// 아래처럼도 사용가능
int? i = null;

 

Nullable형의 특성

  • Nullable<T> 형은 값 형에 null을 할당할 수 있게 합니다.
  • ? 연산자는 Nullable형ㅇㄹ 간단히 표현할 수 있게 합니다.
  • Value속성은 null이면 InvalidOperationException을 발생합니다. 아니면 값을 return합니다.
  • HasValue속성은 변수가 값을 가지면 true, null이면 false를 return합니다.
  • Nullable형에서는 ==과 != 연산만 사용할 수 있습니다. 다른 비교는 Nullable 클래스의 Compare()메소드를 사용합니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A038_Nullable
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> i = null;
            Console.WriteLine(i.GetValueOrDefault());

            if (i.HasValue)
                Console.WriteLine(i.Value); // Console.WriteLine(i);
            else
                Console.WriteLine("Null");

            int? x = null;
            int j = x ?? 0; // Nullable의 값을 non-Nullable에 할당 할 때는 ?? 연산자 사용
            // x가 null이아니면 x의 값을 null일 때는 0을 할당한다는 의미
            Console.WriteLine("x = {0}, j = {1}", x, j);

            Console.WriteLine("x >= 10 ? {0}", x >= 10);
            Console.WriteLine("x < 10 ? {0}", x < 10);
			
            // Null은 모든 숫자보다 작다고나옴
            if (Nullable.Compare<int>(i, j) < 0)
                Console.WriteLine("i < j");
            else if (Nullable.Compare<int>(i, j) > 0)
                Console.WriteLine("i > j");
            else
                Console.WriteLine("i = j");
        }
    }
}

반응형