Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
return
instruction 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#.