(Ceci est un double, mais il est difficile de rechercher, donc je suis assez heureux de fournir plus une autre cible pour les recherches futures ...)
Il est le null-coalescing operator. Essentiellement, il évalue le premier opérande, et si le résultat est nul (soit une référence nulle, soit la valeur nulle pour un type de valeur Null), il évalue le second opérande. Le résultat est celui qui a été évalué en dernier, effectivement.
Notez que du fait de son associativité, vous pouvez écrire:
int? x = E1 ?? E2 ?? E3 ?? E4;
si E1
, E2
, E3
et E4
sont toutes les expressions de type int?
- il commence par E1
et de progrès jusqu'à ce qu'il trouve un non valeur nulle.
Le premier opérande doit être de type nullable, mais le second opérande peut être non nul, auquel cas le type d'expression global est non nul. Par exemple, supposons que E4 est une expression de type int
(mais tout le reste est encore int?
vous pouvez alors faire x
non annulable:
int x = E1 ?? E2 ?? E3 ?? E4;
'' ?? en tant que tel pourrait être difficile à rechercher, mais la recherche de La syntaxe "C#" ou "C#" vous amène rapidement aux réponses –