Изучение на примере - терминология (?, :, и т.д.)
-
22-09-2019 - |
Вопрос
Когда вы были ребенком, вы когда-нибудь спрашивали своих родителей, как пишется что-то, и они говорили вам пойти посмотреть это?Моим первым впечатлением всегда было: "ну, если бы я мог посмотреть это, мне бы не понадобилась помощь в написании".(да, да, я разбираюсь в фонетике)
...в любом случае, я просто просматривал некоторый код и нашел пример, подобный:
txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;
Я могу выяснить, что делает эта операция, но, очевидно, я не могу найти в Google ?или :и я не могу найти их при поиске "операторов c #", LINQ, лямбда-выражений и т.д.Поэтому я должен задать этот глупый вопрос, чтобы начать читать об этом.
Что это за операторы?
Решение
?:
является ли условный оператор, и лучший способ узнать это - спросить здесь!
condition ? first_expression : second_expression;
Если условие равно true, вычисляется первое выражение и становится результатом;если значение равно false, второе выражение вычисляется и становится результатом.Когда-либо вычисляется только одно из двух выражений.
Это чрезвычайно полезно для удобства чтения назначений, когда все выражение относительно короткое:
string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname
Это намного проще и быстрее, чем:
string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
name = user.Nickname;
}
Другие советы
?
является встроенным-if
заявление.Это означает , что если checkbox.Checked
является true
, тогда CharacterCasing.Upper
будет значением выражения, в противном случае CharacterCasing.Normal
будет.
Это работает следующим образом:
type value = condition ? trueValue : falseValue;
это встроенный оператор if."?" - это код для if ":" - это код для else.
Тот самый ?также известен как троичный оператор
Кстати, так получилось, что вы можете искать "?:" зайдите в википедию и найдите это.
Обратите внимание, что его также иногда называют троичным оператором "the", поскольку это единственный троичный оператор (с 3 аргументами) в C-подобных языках.
Кстати.Когда вы изучаете C #, ознакомьтесь ??оператор Иногда это гораздо лучшая альтернатива ?:.
Рассмотреть:
Console.WriteLine(user.LastName ?? "no last name provided");
против:
Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");