Partager via


expressions de valeur par défaut : produire la valeur par défaut

Une expression de valeur par défaut produit la valeur par défaut d’un type. Il existe deux types d’expressions de valeur par défaut : l’appel d’opérateur par défaut et un littéral par défaut.

Vous utilisez également le default mot clé comme étiquette de cas par défaut dans une switch instruction.

opérateur par défaut

L’argument de l’opérateur default doit avoir le nom d’un type ou d’un paramètre de type, comme le montre l’exemple suivant :

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.

littéral par défaut

Vous pouvez utiliser le default littéral pour produire la valeur par défaut d’un type lorsque le compilateur peut déduire le type d’expression. L’expression default littérale produit la même valeur que l’expression default(T)T est le type déduit. Vous pouvez utiliser le default littéral dans l’un des cas suivants :

L’exemple suivant montre l’utilisation du default littéral :

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) ]

Conseil / Astuce

Utilisez la règle de style .NET IDE0034 pour spécifier une préférence sur l’utilisation du default littéral dans votre codebase.

Spécification du langage C#

Pour plus d’informations, consultez la section Expressions de valeur par défaut de la spécification du langage C#.

Voir aussi