C'est ainsi donc qu'il a été décidé d'introduire le nouvel opérateur «?.» au langage C#, après que cette suggestion ait perçu plus de 4.313 votes favorables. Appelé aussi en anglais Safe Navigation Operator, l'opérateur «?.» permet de vérifier si la référence à un membre d'une classe est égale à Null au lieu de générer une exception de type NullReferenceException, économisant par la même occasion plusieurs lignes de code au programmeur.
La force de l'opérateur prend tout son sens, lorsqu'il s'agit d'une référence à un membre d'une classe, qui est membre d'une autre classe et ainsi de suite, dans ce genre de situation il s’avère plus difficile de détecter l'origine de l'exception, un exemple vaut mieux qu'un long discours, considérant ce qui suit :
Code : | Sélectionner tout |
var g1 = parent.child.child.child;
Code : | Sélectionner tout |
var g1 = [parent].[child].[null].child;
L'utilisation du nouvel opérateur permet d'assigner la valeur Null à la variable, dans le cas où une des références vaut Null :
Code : | Sélectionner tout |
1 2 | var g1 = parent?.child?.child?.child; if (g1 != null) // TODO |
Code : | Sélectionner tout |
1 2 3 4 5 | var item = this.Parent; item = (item == null) ? null : item.child; item = (item == null) ? null : item.child; var g1 = (parent == null) ? null : item.child; if (g1 != null) // TODO |
Source : Annonce sur MSDN
Et vous ?
Qu’en pensez-vous ?
Pensez-vous que cet opérateur sera introduit prochainement dans d'autres langages ?