C# switch~caseが初心者でも必ずわかる!if文との違いも紹介

C# switch~caseが初心者でも必ずわかる!if文との違いも紹介

プログラミング言語C#におけるswitch文について、C#初心者向けにエンジニアの筆者が解説します。

switch文はif文と似ており、よく使われる構文の1つです。

本記事を読めば、C# switch文の書き方、break・defaultとは何か・if文とswitch文の使い分け、フォールスルーの禁止について理解できるでしょう。

ぜひ最後まで読んで、C# switch文を理解してください!

C# switch文の書き方

Switch文は、変数などで受け取った変数値の結果を元に、実行する処理を変えたいときに使用します。先ず、Switch文の構文は以下の通りです。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

フォールスルー

switch文

指定された変数値を元に一致するcase値の制御文を実行します。

値には、整数型(int)もしくは文字列は使用できますが、floatやdouble型などの浮動小数点は使用できません。

break文

switchのブロックから抜けます。break文の後は実行されません。

for,while文などの場合はループから脱出するときに使われます。

default文

変数が全てのcaseの値に一致しない場合に実行されます。

デフォルトで実施する処理がない場合は,break;のみを記載しましょう。

または、defaultセクションを消すことで何も処理がおこなわれないままSwitch文を抜けることができます。

if文とswitch文の使い分けのポイント

switch文を今回解説していますが、if文でも同じ内容を書くことはもちろん可能です。

使い分けのポイントとしては、

①単純な2分岐であれば、if文を使う

②多分岐(3分岐)以上であればswitch文を使う

多分岐の場合は特にswitch文を使うことでプログラミングのコードの見やすさが向上し管理がしやすくなります。

また、多分岐の場合ではswitch文のほうがif文よりも速いとされています。

C#のswtich文では,条件式の評価結果に整数(int型)以外に文字列(string型)も利用できます。

switch文を使いこなすことができれば、かなり便利です。

実際にswitch文を書いてみよう(int型)

先程、紹介したswitch文の構文を使って、プログラムを書いてみましょう。

以下、サンプルコードになります。

変数numで受け取ったint値を元に、実行する内容を変えることができました。

実際にswitch文を書いてみよう(string型)

先程int型でのswitch文を紹介しました。続いては string型でのswitch文の書き方です。

C/C++では整数型(int)のみを制御式の値に使用できますが、文字列の利用できませんでした。

C#ではswitch文の制御値に文字列型の利用が可能です。

それでは、実際にサンプルコードを見て行きましょう。

String型のstrに文字列が入力されており、その値を元にcase文が実行されています。

C# switch文 フォールスルーの禁止について

C#でのSwitch文では、フォールスルーが禁止されています。

フォールスルーとは、switch文でbreak文を省略した書き方のことです。

まず、C/C++などでは下記のような書き方ができます。

先程,勉強したcase文のサンプルコード1に似ていますが、case0にbreak文がありません。

これは,break文を書き忘れたのでしょうか?

いいえ、C/C++ではこのような記載ができ、case文が失敗しない限りは次のcase文も実行したいときに書きます。

C/C++では、こちらのコンパイルが可能です。実際に実行すると下記のようになります。

C#では、このフォールスルー書き方が禁止されました。

理由の一つとしては、このフォールスルー処理が意図して書かれたものなのか、間違ってbreak文を書き忘れてしまったのかの判断ができないですよね。

バグの温床となってしまうからです。

C#ではこのコードを実際にコンパイルしようとすると,エラーが出てきます。

C#では、必ずcase文のラベル毎に「break」「goto」「return」のどれかを含めた記述をしましょう。

いかがでしたか?

プログラミング言語C#のswitch文が理解できましたか?繰り返しになりますが、switch文はよく使う構文の1つなので、ぜひ理解しておきましょう。