GetValueOrDefault이란?
C#의 Nullable<T> 구조체에 있는 메서드입니다. 이 메서드를 이용하여 값이 있다면 해당 값을 반환하고, 값이 없다면 해당 데이터 타입의 기본값을 반환합니다.
이 메서드는 두 가지 오버로드를 가지고 있습니다.
- GetValueOrDefault(): 현재 Nullable<T> 개체의 값이나 기본 유형의 기본값을 반환합니다.
- 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값이 반환됩니다.