Bagikan melalui


ekspresi nilai default - menghasilkan nilai default

Ekspresi nilai default menghasilkan nilai default suatu jenis. Terdapat dua jenis ekspresi nilai default: panggilan operator default dan harfiah default.

Anda juga menggunakan kata kunci default sebagai label kasus default dalam switch pernyataan.

operator default

Argumen ke operator default harus berupa nama jenis atau parameter jenis, seperti yang ditunjukkan contoh berikut:

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.

harfiah default

Anda dapat menggunakan default literal untuk menghasilkan nilai default jenis ketika pengkompilasi dapat menyimpulkan jenis ekspresi. default Ekspresi harfiah menghasilkan nilai yang sama dengan ekspresi default(T), dengan T adalah jenis yang disimpulkan. Anda dapat menggunakan default harfiah dalam segala kasus berikut:

Contoh berikut menunjukkan penggunaan harfiah 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) ]

Tip

Gunakan aturan gaya IDE0034 .NET untuk menentukan preferensi tentang penggunaan harfiah default dalam basis kode Anda.

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat bagian Nilai default ekspresi dari spesifikasi bahasa C#.

Lihat juga