5

あなたが子供の頃、何かの綴りを両親に聞いたことがありますか?私の第一印象はいつも、「まあ、調べることができれば、つづりを書くのに助けはいらないだろう」というものでした. (ええええ、私は音声学を知っています)

...とにかく、いくつかのコードを見ていたところ、次のような例が見つかりました:

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

この操作が何をするのか理解できますが、明らかに、グーグルで検索できませんか?または : 「c# 演算子」、LINQ、ラムダ式などを検索しても見つかりません。そのため、このばかげた質問をして、それについて読み始めることができます。

これらの演算子は何ですか?

4

6 に答える 6

18

?:条件演算子です。確認する最善の方法は、ここで質問することです!

condition ? first_expression : second_expression;

条件が真の場合、最初の式が評価されて結果になります。false の場合、2 番目の式が評価され、結果になります。2 つの式のうち 1 つだけが評価されます。

式全体が比較的短い場合、割り当てを読みやすくするのに非常に役立ちます。

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

以下よりもはるかに簡単で高速です。

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}
于 2009-10-19T19:12:19.483 に答える
5

? is an inline-if statement. This means that if checkbox.Checked is true, then CharacterCasing.Upper will be the value of the expression, otherwise CharacterCasing.Normal will be.

It works like this:

type value = condition ? trueValue : falseValue;

于 2009-10-19T19:12:43.737 に答える
3

それはインライン if ステートメントです。「?」は if のコード、「:」は else のコードです。

于 2009-10-19T19:11:47.377 に答える
2

The ? is also known as the ternary operator

于 2009-10-19T19:15:01.567 に答える
1

ちなみにwikipediaで「?:」で検索するとたまたま出てきます。

C ライクな言語で唯一の 3 項 (3 引数) 演算子であるため、"the" 3 項演算子とも呼ばれることがあることに注意してください。

于 2009-10-19T19:16:55.387 に答える
1

ところで。C# を学習しているので、チェックアウト?? operator ?: の代わりに使用する方がはるかに優れている場合があります。

検討:

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

対:

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
于 2009-10-19T20:10:51.653 に答える