2014-08-28 2 views
2

Cela peut paraître simple, mais je veux vraiment trouver une meilleure façon d'écrire le code ci-dessous,Meilleure façon d'attribuer une valeur à partir de plusieurs résultats si la valeur n'est pas nulle?

 if (Master.SerialNo1 != null) 
     { 
      result.ChipId = Master.SerialNo1; 
     } 
     if (Master.SerialNo2 != null) 
     { 
      result.ChipId = Master.SerialNo2; 
     } 
     if (Master.SerialNo3 != null) 
     { 
      result.ChipId = Master.SerialNo3; 
     } 
     if (Master.SerialNo4 != null) 
     { 
      result.ChipId = Master.SerialNo4; 
     } 
+1

Cette question semble être hors sujet car elle appartient [CodeReview.SE] –

+0

La seule alternative que je vois est 'result.ChipId = Master.SerialNoX! = Null? Master.SerialNoX: [...] 'mais il est exactement le même, juste sur une ligne. –

Répondre

3

Essayez d'utiliser ?? opérateur:

result.ChipId = Master.SerialNo1 ?? Master.SerialNo2 ?? Master.SerialNo3 ?? Master.SerialNo4 ?? null; 

Bien sûr, au lieu de null vous pouvez utiliser une valeur par défaut.

+0

merci, ça a aidé @kao – Sajeetharan

2

En supposant que les types de ChipID et SerialNo sont les mêmes, que diriez-vous:

result.ChipId = Master.SerialNo1 ?? Master.SerialNo2 ?? Master.SerialNo3 ?? Master.SerialNo4; 

Cela assignera à ChipId la première référence non nulle dans l'ordre où elles se trouvent sur le côté droit.

Cela peut être plus facile à lire formaté sur plusieurs lignes:

result.ChipId = 
     Master.SerialNo1 
    ?? Master.SerialNo2 
    ?? Master.SerialNo3 
    ?? Master.SerialNo4; 

?? est connu sous le nom "null coalescing operator".

+0

Merci @matthew watson – Sajeetharan

Questions connexes