if != null
Qui n'a jamais fait quelque chose comme ça:
LicensePlate licensePlate = null;
// Récupérer une instance pour licensePlate
Car car;
Person owner;
Address address;
string code;
if (licensePlate != null)
if ((car = licensePlate.Car) != null)
if ((owner = car.Owner) != null)
if ((address = owner.Address) != null)
code = address.PostCode;
ou un équivalent ?
Ce code est long pour pas grand chose et c'est pénible.
Bien sûr, il est possible d'utiliser la syntaxe ?: au lieu du if :
code = licensePlate == null ? null : ((car = licensePlate.Car) == null ? null : ((owner = car.Owner) == null ? null : ((address = owner.Address) == null ? null : address.PostCode)));
Mais même comme ça, ce n'et pas l'idéal, surtout que le code perd vite en lisibilité.
Même si je n'arrive pas à retrouver l'article en question, je suis à peu près certain d'avoir lu quelque part qu'on pourrait récupérer le code avec C#4 de la façon suivante :
code = licensePlate?.Car?.Owner?.Address?.PostCode;
Cependant, si vous voulez récupérer les instances intermédiaires ou ne pas attendre C#4, vous pouvez utiliser une extension method comme vient de le proposer Alex dans son blog. Perso, j'adore cette solution.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :