Partage via


Expressions de 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’appeldefault d’opérateur et un default littéral.

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

La documentation de référence du langage C# décrit la version la plus récente du langage C#. Il contient également la documentation initiale des fonctionnalités dans les préversions publiques pour la prochaine version du langage.

La documentation identifie toute fonctionnalité introduite en premier dans les trois dernières versions de la langue ou dans les préversions publiques actuelles.

Conseil / Astuce

Pour savoir quand une fonctionnalité a été introduite en C#, consultez l’article sur l’historique des versions du langage C#.

default opérateur

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.

default Littérale

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