2021年12月18日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 755 count

~?~:~演算子: 条件演算子は禁止されることもあるけれど知らないと仕事になりません

Written By: 川俣 晶連絡先

この章のテーマ §

 条件演算子(?:演算子)を学習します。条件演算子は利用を禁止されることもあるけれど、使用された既存ソースコードも多いので智識を持たねばソースを読めません。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, 条件演算子, int型, for文, if文, 演算子の優先順位

解説 §

 条件演算子は、式の中にif文相当の条件判断を書き込むことができます。

 ただし、if文では実行す文を選択できましたが、条件演算子は値を選択します。

 書き方は以下の通りです。

  • (条件式) ? (成立した時の値) : (成立しなかった時の値)

 たとえば、true?"A":"B"は"A"という値になりますが、false?"A":"B"は"B"になります。

罠の数々 §

  • 条件演算子は三項条件演算子、三項演算子とも呼ばれる。おおむね同じものを示していると思って良い
  • 良く分からなかったらif文で書いても良い
  • 演算子の優先順位の影響を受けやすいことに注意。たとえば X ? Y : Z + 1と書いた時、+ 1はZに対するものか、X ? Y : Z全体に対するものか、間違うケースがある。カッコを付けて先に計算して欲しい範囲を明示すると安心だ
  • この機能は、「分かりにくい」「読みにくい」「知らない人もいる」などの理由で禁止されることも多い
  • 一方で、短く書けて便利だし、深刻なトラブルを起こすわけでもないので、利用している人も多い。知らないでは読めないソースも多い。学ぶことは必須

参考リンク §

?: 演算子 (C# リファレンス)

サンプルソース: conditionalOperator §

Console.WriteLine("条件演算子で書く");

for (int i = 0; i < 4; i++)

{

    var label = i % 2 == 0 ? "偶数" : "奇数";

    Console.WriteLine($"{i}は{label}です。");

}

Console.WriteLine("if文で書く");

for (int i = 0; i < 4; i++)

{

    string label;

    if (i % 2 == 0)

        label = "偶数";

    else

        label = "奇数";

    Console.WriteLine($"{i}は{label}です。");

}

実行結果 §

条件演算子で書く

0は偶数です。

1は奇数です。

2は偶数です。

3は奇数です。

if文で書く

0は偶数です。

1は奇数です。

2は偶数です。

3は奇数です。

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

var x = false;

var y = true;

var a = x ? "A": y ? "B" : "C";

Console.WriteLine(a);

  1. A
  2. B
  3. C
  4. ABC
  5. コンパイルエラー

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
12月
19日
*= /= %= += -= <<= >>= &= ^= |= : 複合代入で文字数節約
3days 0 count
total 692 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
17日
++x/--x/x++/x--: 副作用は使いよう・こいつら実は便利だよう
3days 0 count
total 795 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20211218100710
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.