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

switch/case: 条件の多い分岐はお任せよ

Written By: 川俣 晶連絡先

この章のテーマ §

 条件のによる分岐は多くの場合if文で記述しますが、条件の多い分岐にはswitch文も使用できます。

 また、switchは式として使う方法もあります。式として使ったswitch式は式の一部に組み込めます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, int型, 複文, for文

解説 §

 switch文は、if文の親戚ですが、if文が2つの【真】【偽】のケースしか扱えないのに対して、多数のケースを扱えます。

 switch文は、以下の書式で書きます。

  • switch(式){ 内容 }

 内容は、以下の書式を列挙します。

  • case 値: 実行文; break;

 どのケースにてはまらないものは、defaultキーワードを使い処理内容を記述します。if文のelseに相当するものです。

  • default: 実行文; break;

 switchを式として使う場合、書式は異なります。

  • 式 switch { 内容 }

 内容は、以下の初期を列挙します。

  • 式の値 => 結果とする値,

 defaultに相当するものは式の値を_としておきます。

 実例はサンプルソースを参照して下さい。

罠の数々 §

  • ここで使用されるbreak文は、ループから脱出するbreak文とは異なる機能性を与えられている
  • switch文で個々のケースでのbreak文の記述は必須である (希に省略が許されることがある。この条件は他の似た構文のプログラミング言語とは異なるので、他の言語と混ぜて学習することはあまりお勧めではない)
  • ループの中でswitch文を使ったとき、switch文の中にbreak文を書いてもループは脱出できない。switch文を終わらせる機能しか持たない
  • C#のバージョンが古いとswitch式は使えない
  • switch文、式では全ての型が使用できるわけではない
  • 見かける頻度が少ないのでここでは解説していないが、値の一致ではなく大小比較を行うリレーションパターンも存在する
  • 見かける頻度が少ないのでここでは解説していないが、whenキーワードを用いた追加条件を指定するケース ガードも存在する

参考リンク §

選択ステートメント - C# リファレンス

switch 式 - C# リファレンス

サンプルソース: kw_switch §

Console.WriteLine("swich文の場合");

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

{

    switch (i)

    {

        case 0:

            Console.WriteLine("ZERO");

            break;

        case 1:

            Console.WriteLine("ONE");

            break;

        default:

            Console.WriteLine("OTHERS");

            break;

    }

}

Console.WriteLine("swich式の場合");

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

{

    var x = i switch

    {

        0 => "ZERO",

        1 => "ONE",

        _ => "OTHERS"

    };

    Console.WriteLine(x);

}

実行結果 §

swich文の場合

ZERO

ONE

OTHERS

swich式の場合

ZERO

ONE

OTHERS

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

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

int i = 0;

switch (i)

{

    case 0:

        Console.WriteLine("ゼロだよ");

    case 1:

        Console.WriteLine("イチだよ");

        break;

    default:

        Console.WriteLine("他の値だよ");

        break;

}

  1. 「ゼロだよ」
  2. 「イチだよ」
  3. 「他の値だよ」
  4. 「ゼロだよ」+「イチだよ」
  5. コンパイルエラーで実行できない

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
12月
14日
try/catch/finally: 例外が起きるか分からない? レッツトライ!
3days 1 count
total 425 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
10日
for: 万能無敵の繰り返し制御・強力すぎてごめんなさい
3days 1 count
total 437 count

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

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

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

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

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

http://mag.autumn.org/tb.aspx/20211213101034
サイトの表紙【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.