유니티 GetValueOrDefault

GetValueOrDefault이란?

C#의 Nullable<T> 구조체에 있는 메서드입니다. 이 메서드를 이용하여 값이 있다면 해당 값을 반환하고, 값이 없다면 해당 데이터 타입의 기본값을 반환합니다.

 

이 메서드는 두 가지 오버로드를 가지고 있습니다.

  1. GetValueOrDefault(): 현재 Nullable<T> 개체의 값이나 기본 유형의 기본값을 반환합니다.
  2. GetValueOrDefault(T defaultValue): 현재 Nullable<T> 개체의 값이나 지정된 기본값을 반환합니다.

 

참고로 Dictionary<T>, HashSet<T>와 같은 타입에도 사용할 수 있습니다.


사용 방법

using System;

class Sample 
{
    public static void Main() 
    {
        float? mySingle = 12.34f;
        float? yourSingle = -1.0f;

        Console.WriteLine("*** Display a value or the default value ***\\n");
        Display("A1", mySingle, yourSingle);

        yourSingle = mySingle.GetValueOrDefault();
        Display("A2", mySingle, yourSingle);

        mySingle = null;
        yourSingle = mySingle.GetValueOrDefault();
        Display("A3", mySingle, yourSingle);

        mySingle = 12.34f;
        yourSingle = -1.0f;

        Console.Write("\\n*** Display a value or the ");
        Console.WriteLine("specified default value ***\\n");
        Display("B1", mySingle, yourSingle);

        yourSingle = mySingle.GetValueOrDefault(-222.22f);
        Display("B2", mySingle, yourSingle);

        mySingle = null;
        yourSingle = mySingle.GetValueOrDefault(-333.33f);
        Display("B3", mySingle, yourSingle);
    }

    public static void Display(string title, float? dspMySingle, float? dspYourSingle) 
    {
        Console.WriteLine("{0}) mySingle = [{1}], yourSingle = [{2}]",
            title, dspMySingle, dspYourSingle);
    }
}

 

출력 값은 아래와 같습니다.

*** Display a value or the default value ***

A1) mySingle = [12.34], yourSingle = [-1]
A2) mySingle = [12.34], yourSingle = [12.34]
A3) mySingle = [], yourSingle = [0]

*** Display a value or the specified default value ***

B1) mySingle = [12.34], yourSingle = [-1]
B2) mySingle = [12.34], yourSingle = [12.34]
B3) mySingle = [], yourSingle = [-333.33]

 

A3의 경우 null이면 기본값을 반환하므로 0입니다.

B3의 경우 null이지만 기본값으로 세팅해둔 -333.33f값이 반환됩니다.