Imparare con l'esempio - la terminologia (,:, ecc?)
-
22-09-2019 - |
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?
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");