기본값 식 - 기본값 생성

기본값 식은 형식의 기본값을 생성합니다. 기본값 식에는 두 가지가 있습니다. 기본 연산자 호출 및 기본 리터럴.

또한 default 키워드를 switch 내의 기본 사례 레이블로 사용할 수 있습니다.

기본 연산자

default 연산자의 인수는 다음 예제와 같이 형식 또는 형식 매개 변수의 이름이어야 합니다.

Console.WriteLine(default(int));  // output: 0
Console.WriteLine(default(object) is null);  // output: True

void DisplayDefaultOf<T>()
{
    var val = default(T);
    Console.WriteLine($"Default value of {typeof(T)} is {(val == null ? "null" : val.ToString())}.");
}

DisplayDefaultOf<int?>();
DisplayDefaultOf<System.Numerics.Complex>();
DisplayDefaultOf<System.Collections.Generic.List<int>>();
// Output:
// Default value of System.Nullable`1[System.Int32] is null.
// Default value of System.Numerics.Complex is (0, 0).
// Default value of System.Collections.Generic.List`1[System.Int32] is null.

기본 리터럴

컴파일러가 식 형식을 유추할 수 있는 경우 default 리터럴을 사용하여 형식의 기본값을 생성할 수 있습니다. default 리터럴 식은 T가 추론된 형식은 default(T) 식과 동일한 값을 생성합니다. 다음과 같은 경우에 default 리터럴 사용할 수 있습니다.

다음 예제에서는 default 리터의 사용법을 보여 줍니다.

T[] InitializeArray<T>(int length, T initialValue = default)
{
    if (length < 0)
    {
        throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative.");
    }

    var array = new T[length];
    for (var i = 0; i < length; i++)
    {
        array[i] = initialValue;
    }
    return array;
}

void Display<T>(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]");

Display(InitializeArray<int>(3));  // output: [ 0, 0, 0 ]
Display(InitializeArray<bool>(4, default));  // output: [ False, False, False, False ]

System.Numerics.Complex fillValue = default;
Display(InitializeArray(3, fillValue));  // output: [ (0, 0), (0, 0), (0, 0) ]

코드베이스에서 default 리터럴 사용에 대한 기본 설정을 지정하려면 .NET 스타일 규칙 IDE0034를 사용합니다.

C# 언어 사양

자세한 내용은 C# 언어 사양기본값 식 섹션을 참조하세요.

참고 항목