Événement
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
L’opérateur de fusion null ??
retourne la valeur de l’opérande de gauche si elle n’est pas null
; sinon, il évalue l’opérande de droite et retourne son résultat. L’opérateur ??
n’évalue pas son opérande droit si l’opérande gauche a la valeur non Null. L’opérateur de coalescence nulle ??=
assigne la valeur de son opérande droit à son opérande gauche uniquement si l’opérande gauche a la valeur null
. L’opérateur ??=
n’évalue pas son opérande droit si l’opérande gauche a la valeur non Null.
List<int>? numbers = null;
int? a = null;
Console.WriteLine((numbers is null)); // expected: true
// if numbers is null, initialize it. Then, add 5 to numbers
(numbers ??= new List<int>()).Add(5);
Console.WriteLine(string.Join(" ", numbers)); // output: 5
Console.WriteLine((numbers is null)); // expected: false
Console.WriteLine((a is null)); // expected: true
Console.WriteLine((a ?? 3)); // expected: 3 since a is still null
// if a is null then assign 0 to a and add a to the list
numbers.Add(a ??= 0);
Console.WriteLine((a is null)); // expected: false
Console.WriteLine(string.Join(" ", numbers)); // output: 5 0
Console.WriteLine(a); // output: 0
L’opérande gauche de l’opérateur ??=
doit être une variable, une propriétéou un élément d’indexeur.
Le type de l’opérande gauche des opérateurs ??
et ??=
ne peut pas être un type valeur non-nullable. En particulier, vous pouvez utiliser les opérateurs de coalescence nulle avec des paramètres de type non contraints :
private static void Display<T>(T a, T backup)
{
Console.WriteLine(a ?? backup);
}
Les opérateurs de coalescence nulle sont associatifs de droite. Autrement dit, des expressions du formulaire
a ?? b ?? c
d ??= e ??= f
sont évalués en tant que
a ?? (b ?? c)
d ??= (e ??= f)
Les opérateurs ??
et ??=
peuvent être utiles dans les scénarios suivants :
Dans les expressions avec les opérateurs conditionnels null?.
et ?[]
, vous pouvez utiliser l’opérateur ??
pour fournir une autre expression à évaluer si le résultat de l’expression avec des opérations conditionnelles null est null
:
double SumNumbers(List<double[]> setsOfNumbers, int indexOfSetToSum)
{
return setsOfNumbers?[indexOfSetToSum]?.Sum() ?? double.NaN;
}
var sum = SumNumbers(null, 0);
Console.WriteLine(sum); // output: NaN
Lorsque vous utilisez des types valeur nullables et que vous devez fournir une valeur d’un type valeur sous-jacent, utilisez l’opérateur ??
pour spécifier la valeur à fournir au cas où une valeur de type nullable est null
:
int? a = null;
int b = a ?? -1;
Console.WriteLine(b); // output: -1
Utilisez la méthode Nullable<T>.GetValueOrDefault() si la valeur à utiliser quand une valeur de type Nullable est null
doit être la valeur par défaut du type valeur sous-jacent.
Vous pouvez utiliser une expression throw
comme opérande droit de l’opérateur ??
pour rendre le code de vérification des arguments plus concis :
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), "Name cannot be null");
}
L’exemple précédent montre également comment utiliser des membres expression-bodied pour définir une propriété.
Vous pouvez utiliser l’opérateur ??=
pour remplacer le code du formulaire
if (variable is null)
{
variable = expression;
}
par le code suivant :
variable ??= expression;
Les opérateurs ??
et ??=
ne peuvent pas être surchargés.
Pour plus d’informations sur l’opérateur ??
, consultez la section Opérateur de coalescence nulle de la spécification du langage C#.
Pour plus d’informations sur l’opérateur ??=
, consultez la note de proposition de fonctionnalité.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires:
Événement
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenant