Bagikan melalui


ekspresi nilai default - menghasilkan nilai default

Ekspresi nilai default menghasilkan nilai default jenis. Ada dua jenis ekspresi nilai default: panggilan operator default dan literal default.

Anda juga menggunakan default kata kunci 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.

literal 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 default(T) ekspresi di mana T adalah jenis yang disimpulkan. Anda dapat menggunakan default harfiah dalam salah satu kasus berikut:

Contoh berikut menunjukkan penggunaan default literal:

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 .NET IDE0034 untuk menentukan preferensi tentang penggunaan default literal di basis kode Anda.

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat bagian Ekspresi nilai default dari spesifikasi bahasa C#.

Lihat juga