Domanda

Credo che ricordo di aver visto qualcosa di simile al ? : ternario operator in C # che aveva solo due parti ad esso e sarebbe tornato il valore della variabile se non fosse nullo e un valore predefinito se lo fosse. Qualcosa di simile a questo:

tb_MyTextBox.Text = o.Member ??SOME OPERATOR HERE?? "default";

In sostanza l'equivalente di questo:

tb_MyTextBox.Text = o.Member != null ? o.Member : "default";

Fa una cosa del genere esistono o ho appena immaginare di vedere da qualche parte?

È stato utile?

Soluzione

Yup:

tb_myTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en -us / library / ms173224 (VS.80) aspx

Altri suggerimenti

Beh, non è proprio la stessa cosa come il operatore condizionale , ma io ti penso stai pensando di nullo operatore coalescenza (?? ). (Credo che hai detto che era "simile" :) Nota che "ternario" appena si riferisce al numero di operandi dell'operatore è -. Così, mentre l'operatore condizionale è un operatore ternario, il nulla coalescenza operatore è un operatore binario

Ci vuole ampiamente questa forma:

result = first ?? second;

Ecco second sarà valutata solo se first è nullo. Non deve essere l'obiettivo di un incarico -. Si potrebbe usare per valutare un argomento del metodo, ad esempio

Si noti che il primo operando ha di essere annullabile - ma il secondo no. Anche se ci sono alcuni dettagli specifici intorno conversioni, nel caso semplice il tipo di tutta l'espressione è il tipo del secondo operando. A causa di associatività, è possibile impilare usi dell'operatore ordinatamente troppo:

int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();

int result = x ?? y ?? z;

Si noti come x e y sono annullabili, ma z e result non lo sono. Naturalmente, z potrebbe essere annullabile, ma poi result avrebbe dovuto essere troppo annullabile.

Fondamentalmente operandi sarà valutata nell'ordine in cui appaiono nel codice, con valutazione fermandosi quando trova un valore non nullo.

Oh, e anche se la è mostrato in termini di tipi di valore sopra, funziona con tipi di riferimento troppo (che sono sempre Null).

Funny avete usato "?? qualche operatore QUI ??", in quanto l'operatore che stai cercando è "??", cioè:.

tb_MyTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en-us/library/ ms173224.aspx

Sì, si chiama l'operatore Null coalescenza:

  

?? Operatore (Riferimenti per C #) (MSDN)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top