Qual è il modo più conciso per scrivere l'opposto di una fusione nulla [duplicato]
-
29-10-2019 - |
Domanda
Possibile duplicato:
Esiste un "opposto" aloperatore di coalescenza nullo?(... in qualsiasi lingua?)
Esiste un modo più conciso per scrivere la terza riga qui?
int? i = GetSomeNullableInt();
int? j = GetAnother();
int k = i == null ? i : j;
Conosco l'operatore di coalescenza nullo ma il comportamento che cerco è l'opposto di questo:
int k == i ?? j;
Soluzione
Subdolo: l'hai modificato mentre rispondevo.:)
Non credo che esista un modo più conciso per scriverlo.Tuttavia, utilizzerei la proprietà "HasValue" anziché== null.È più facile vedere il tuo intento in questo modo.
int? k = !i.HasValue ? i : j;
(BTW - anche k deve essere annullabile.)
Altri suggerimenti
In C #, il codice che hai è il modo più conciso per scrivere quello che vuoi.
Qual è il punto di quell'operatore?I casi d'uso sono piuttosto limitati.Se stai cercando una soluzione a riga singola senza dover utilizzare una variabile temporanea, in primo luogo non è necessaria.
int k = GetSomeNullableInt() == null ? null : GetAnother();