はじめに
前回は、if文による条件分岐について説明しました。
今回は、switch文による分岐処理について説明します。
目次
1.switch文の基本
はじめに、switch文の基本書式を以下に示します。
switch (変数) { case 値1: 処理; // 変数と値1が一致した時に実行する処理 break; case 値2: 処理; // 変数と値2が一致した時に実行する処理 break; : default: 処理; // 変数がどの値とも一致しなかった場合に実行する処理 break; }
switch文を使用すると、変数に入っている値と case の後ろに書かれた値が一致した箇所に書かれている命令を実行します。どの値とも一致しない場合には default に書かれた処理を実行します。
また、switchの中で使用できる変数は、文字列型か整数型の変数のみです。
breakというキーワードはswitch文を抜けるために使用するものです。
以下に switch文の使用例を示します。
この switch文の例では、変数の値が0の場合に「明治」を、1の場合に「大正」、2の場合に「昭和」を、3の場合に「平成」を出力します。
変数xの値は2ですので、「昭和」が出力されます。
C#におけるswitch文の例
var data = ""; var x = 2; switch (x) { case 0: data = "明治"; break; case 1: data = "大正"; break; case 2: data = "昭和"; break; case 3: data = "平成"; break; default: data = "対象なし"; break; } Console.WriteLine(data);
VB.NETの場合は switchではなく「select」というキーワードを使用します。C#のswitch文と同様の動作をします。breakキーワードは不要です。
VB.NETにおけるSelect文の例
Dim data = "" Dim x = 3 Select Case x Case 0 data = "明治" Case 1 data = "大正" Case 2 data = "昭和" Case 3 data = "平成" Case Else data = "該当なし" End Select Console.WriteLine(data)
Javaは、C#と同一の書式を使用します。
Javaにおけるswitch文の例
String data = ""; nt x = 2; switch (x) { case 0: data = "明治"; break; case 1: data = "大正"; break; case 2: data = "昭和"; break; case 3: data = "平成"; break; default: data = "対象なし"; break; } System.out.println(data);
swiftは、C#同様にswitch文を使用しますが、変数に()は必要ありません。またbreakキーワードも不要です。
swiftにおけるswitch文の例
var data = "" let x = 2 switch x { case 0: data = "明治" case 1: data = "大正" case 2: data = "昭和" case 3: data = "平成" default: data = "該当なし" } print(data)
2.データ型による分岐
C# 7では、switch文のcase機能が拡張され、case データ型 変数 のように記述すると、データ型と一致する場合にキャストして変数に代入できることができるようになりました。
以下に例を示します。
11行目は変数 obj のデータ型が int かを調べ、intである場合に変数 x に objの値を受け取ります。
14行目は、11行目と同様で obj のデータ型が doubleかを調べ、doubleである場合に変数 x に値を受け取ります。
17行目は、obj のデータ型が string かを調べ、stringである場合に変数 s に値を受け取ります。さらに when の後の条件式が満たす場合に、処理が実行されます。
C#のswitch文でデータ型で分岐する例
static void Main(string[] args) { object data ="サンプル"; switchSample(data); } static void switchSample(object obj) { string msg = ""; switch (obj) { case int x: msg = $"int型:{x}"; break; case double y: msg = $"double型:{y}"; break; case string s when s.Length > 2: msg = $"string型:{s}"; break; default: msg = "対象なし"; break; } }
コメント