Bagikan melalui


Ekspresi nilai default

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

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

Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.

Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.

Tip

Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.

default pengoperasi

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.

default Harfiah

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