Programing/C#

C# 프로그래밍의 기초 : Nullable (널러블)

유니얼 2024. 3. 3. 18:47
728x90

널러블(Nullable) 타입은 C#에서 값 타입(Value Type)이 null 값을 가질 수 있게 하는 기능입니다. 기본적으로 값 타입, 예를 들어 int, double, bool 등은 null을 할당할 수 없습니다. 이러한 제약은 때때로 프로그래밍에 있어서 불편함을 초래할 수 있습니다. 널러블 타입은 이러한 문제를 해결하고, 값 타입 변수가 null을 가질 수 있도록 해줍니다.

널러블 타입의 선언

널러블 타입은 해당 타입 뒤에 ?를 붙여 선언합니다. 예를 들어, int?는 널러블 정수 타입을 의미하고, null 값을 가질 수 있습니다.

널러블 타입의 주요 속성 및 메서드

  • HasValue: 변수에 값이 할당되어 있는지 여부를 나타내는 bool 값입니다. 값이 있으면 true, null이면 false를 반환합니다.
  • Value: 변수에 저장된 값을 반환합니다. HasValue가 false일 때 Value를 접근하면 InvalidOperationException 예외가 발생합니다.

널러블 타입의 사용 이유

  1. 데이터베이스와의 상호작용: 데이터베이스에서는 종종 값이 '없음' 또는 '알 수 없음'을 나타내기 위해 null을 사용합니다. 널러블 타입을 사용하면 데이터베이스의 null 값을 자연스럽게 처리할 수 있습니다.
  2. 옵셔널 데이터 처리: 함수나 메서드의 결과가 '없음'을 의미할 수 있을 때 널러블 타입을 사용하여 이를 표현할 수 있습니다. 이는 선택적인 값이 필요한 다양한 상황에서 유용합니다.

예제 코드

using System;
using System.Reflection;

class Program
{
    static void Main(string[] args)
    {
        int? nullableInt = null;
        double? nullableDouble = null;
        bool? nullableBool = null;

        int? num = null; // 널러블 타입의 선언 및 초기화
        if (num.HasValue)
        {
            Console.WriteLine(num.Value); // 값이 존재할 경우, 값을 출력
        }
        else
        {
            Console.WriteLine("num is null"); // 값이 null인 경우, 메시지 출력
        }
        //출력 
        // num is null
    }
}

결론

널러블 타입은 C# 프로그래밍에서 특정 상황에서 값 타입이 null을 가질 수 있게 하여 유연성을 제공합니다. 데이터베이스 작업이나 선택적인 값 처리에 있어서 매우 유용하게 사용될 수 있습니다. 하지만 null 값의 사용은 프로그램 로직에 주의를 기울여야 하며, HasValue와 Value 속성을 적절히 사용하여 예외가 발생하지 않도록 관리해야 합니다.

반응형