Вопрос

Когда вы были ребенком, вы когда-нибудь спрашивали своих родителей, как пишется что-то, и они говорили вам пойти посмотреть это?Моим первым впечатлением всегда было: "ну, если бы я мог посмотреть это, мне бы не понадобилась помощь в написании".(да, да, я разбираюсь в фонетике)

...в любом случае, я просто просматривал некоторый код и нашел пример, подобный:

 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");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top