Domanda

Quando eri un bambino, hai mai chiesto ai tuoi genitori come si scrive qualcosa e ti ha detto di andare a guardare in su? La mia prima impressione è stata sempre, "bene se poteva guardare in su riprenderei bisogno di aiuto ortografia". (Yeah yeah lo so fonetica)

... in ogni caso, stavo guardando un po 'di codice e ho trovato un esempio come:

 txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;

riesco a capire che cosa questa operazione fa, ma ovviamente, non posso google per? o:. e smusso trovarli durante la ricerca di "C # operatori", LINQ, le espressioni lambda, ecc Quindi devo porre questa domanda stupida così posso andare cominciare a leggere su di esso

Quali sono questi operatori?

È stato utile?

Soluzione

?: è il href="http://msdn.microsoft.com/en-us/library/ty67wk28%28VS.80%29.aspx" rel="nofollow noreferrer"> condizionale operatore , e il modo migliore per scoprirlo è quello di chiedere qui!

condition ? first_expression : second_expression;
  

Se la condizione è vera, prima espressione viene valutata e diventa il risultato; se falsa, la seconda espressione viene valutata e diventa il risultato. Solo uno dei due espressioni è mai valutato.

E 'estremamente utile per migliorare la leggibilità delle assegnazioni, quando l'intera espressione è relativamente breve:

string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname

è molto più facile e più veloce di:

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}

Altri suggerimenti

? è una dichiarazione inline-if. Ciò significa che se checkbox.Checked è true, quindi CharacterCasing.Upper sarà il valore dell'espressione, altrimenti CharacterCasing.Normal sarà.

Funziona in questo modo:

type value = condition ? trueValue : falseValue;

che è un inline if. "?" è il codice per il caso ":". è il per l'altro

L'? è anche noto come ternario operatore

Per inciso, si dà il caso che si può cercare ":?" su Wikipedia e trovare questo.

Si noti che è anche talvolta chiamato "il" operatore ternario, dal momento che il suo l'unico operatore ternario (3-argomento) in linguaggi C-like.

Btw. Come si sta imparando C # del check-out ?? operatore A volte è molto meglio alternativa:?.

Si consideri:

Console.WriteLine(user.LastName ?? "no last name provided");

vs

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top