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 de l’opérateur par défaut et un littéral par défaut.
Vous utilisez également le mot-clé default
comme étiquette case par défaut dans une instruction switch
.
Opérateur default
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
À partir de C# 7.1, vous pouvez utiliser le littéral default
pour produire la valeur par défaut d’un type lorsque le compilateur peut déduire le type d’expression. L’expression littérale default
génère la même valeur que l’expression default(T)
, où T
est le type déduit. Vous pouvez utiliser le littéral default
dans les cas suivants :
- Dans l'affectation ou l'initialisation d'une variable.
- Dans la déclaration de la valeur par défaut d’un paramètre de méthode facultatif.
- Dans un appel de méthode pour fournir une valeur d'argument.
- Dans une instruction
return
ou en tant qu’expression d’un membre expression-bodied.
L’exemple suivant illustre l’utilisation du littéral 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) ]
Conseil
Utilisez la règle de style .NET IDE0034 pour spécifier une préférence sur l’utilisation du littéral default
dans votre codebase.
spécification du langage C#
Pour plus d’informations, voir la section Expressions de valeur par défaut de la spécification du langage C#.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour