Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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) où T est le type déduit. Vous pouvez utiliser le default littéral dans l’un des 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
returninstruction ou en tant qu’expression dans un membre expression-bodied.
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#.