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;
È stato utile?

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top