VB.NETのSelect Case文を徹底解説!初心者でもわかる分岐処理の基本と応用例
生徒
「先生、VB.NETでたくさんの条件を分けたいとき、If文をいっぱい書くのは大変じゃないですか?」
先生
「確かにその通りですね。そんなときに便利なのがSelect Case文なんです。」
生徒
「Select Caseって何ですか?If文とどう違うんですか?」
先生
「簡単に言えば、条件がたくさんあるときにスッキリ書ける方法です。今日はその基本と応用を学んでいきましょう。」
1. Select Case文とは?
VB.NETのSelect Case文は、ある値に応じて処理を分けるための条件分岐構文です。If文を何個も並べるよりも見た目がスッキリし、読みやすいコードを書くことができます。
たとえば、「数値が1のとき」「2のとき」「3のとき」と条件がたくさんある場合、If文だと次のように長くなってしまいます。
If number = 1 Then
Console.WriteLine("りんご")
ElseIf number = 2 Then
Console.WriteLine("バナナ")
ElseIf number = 3 Then
Console.WriteLine("みかん")
Else
Console.WriteLine("その他の果物")
End If
このように長くなると読みづらいですよね。そんなときに使うのがSelect Case文です。
2. Select Case文の基本構文
基本的な書き方は次のようになります。
Select Case 変数名
Case 値1
' 値1のときの処理
Case 値2
' 値2のときの処理
Case Else
' どの値にも当てはまらないときの処理
End Select
では、実際に例を見てみましょう。
3. 基本例:果物の番号で名前を表示する
ユーザーが入力した数字に応じて、果物の名前を表示するプログラムを作ってみましょう。
Dim number As Integer = 2
Select Case number
Case 1
Console.WriteLine("りんご")
Case 2
Console.WriteLine("バナナ")
Case 3
Console.WriteLine("みかん")
Case Else
Console.WriteLine("その他の果物")
End Select
バナナ
このように、numberの値が2なので、「バナナ」と表示されました。複数の条件をシンプルに書けるのがSelect Case文の大きな利点です。
4. 範囲を使った条件分岐
Select Caseでは、単なる一致だけでなく「範囲」も扱うことができます。たとえば、点数によって評価を分けたい場合です。
Dim score As Integer = 78
Select Case score
Case 90 To 100
Console.WriteLine("A評価")
Case 70 To 89
Console.WriteLine("B評価")
Case 50 To 69
Console.WriteLine("C評価")
Case Else
Console.WriteLine("不合格")
End Select
B評価
このように、「To」を使うと「~から~まで」という範囲指定ができます。If文で書くよりもずっと読みやすくなります。
5. 複数の値をまとめて指定する
複数の値で同じ処理をしたいときには、カンマ区切りで書くこともできます。たとえば、曜日を判定して「平日」か「休日」を表示する例を見てみましょう。
Dim day As String = "日"
Select Case day
Case "月", "火", "水", "木", "金"
Console.WriteLine("平日です。仕事や学校があります。")
Case "土", "日"
Console.WriteLine("休日です。ゆっくり休みましょう。")
Case Else
Console.WriteLine("正しい曜日を入力してください。")
End Select
休日です。ゆっくり休みましょう。
このように、同じ処理をする複数の条件を一つにまとめられるのもSelect Caseの便利なポイントです。
6. Case Elseで予期しない値にも対応
Case Elseは、どの条件にも当てはまらなかったときの処理を記述する場所です。予想外の値が入力された場合に備えて、エラーやメッセージを出すのに使います。
Dim color As String = "紫"
Select Case color
Case "赤"
Console.WriteLine("情熱の色です。")
Case "青"
Console.WriteLine("冷静な色です。")
Case "緑"
Console.WriteLine("自然の色です。")
Case Else
Console.WriteLine("その色の意味は登録されていません。")
End Select
その色の意味は登録されていません。
このように、Case Elseを入れておくことで、思わぬ入力にも対応でき、プログラムが安全になります。
7. 応用例:季節を判定するプログラム
最後に、少し応用的な例を見てみましょう。月の数字に応じて季節を判定するプログラムです。
Dim month As Integer = 5
Select Case month
Case 3 To 5
Console.WriteLine("春です。花が咲く季節ですね。")
Case 6 To 8
Console.WriteLine("夏です。暑い日が続きます。")
Case 9 To 11
Console.WriteLine("秋です。紅葉がきれいです。")
Case 12, 1, 2
Console.WriteLine("冬です。寒さに気をつけましょう。")
Case Else
Console.WriteLine("月の値が正しくありません。")
End Select
春です。花が咲く季節ですね。
このように、Select Case文は複数の条件を整理して見やすく書けるため、If文よりもきれいでミスの少ないコードになります。初心者のうちからしっかり使い方を覚えておくと、VB.NETでの開発がぐっと楽になりますよ。
まとめ
VB.NETのSelect Case文は、複数の条件分岐を整理して読みやすく書くための強力な構文です。If文で多くの条件を並べると可読性が低下し、間違いやすくなりますが、Select Caseを使うとスッキリと整理でき、条件に応じた処理を簡単に管理できます。基本的には変数の値に応じて、Caseごとに処理を分け、どの条件にも当てはまらない場合はCase Elseで予期しない値に対応するのがポイントです。
また、Select Case文では単純な一致条件だけでなく、範囲を指定するCase 〇 To 〇や、複数の値をまとめて指定するCase 値1, 値2といった書き方も可能です。これにより、点数評価や曜日判定、季節判定など、複雑な条件分岐でもコードが非常に読みやすくなります。初心者でも、この文法を使いこなすことでプログラムの保守性と可読性を高めることができます。
サンプルプログラム:Select Case文の応用例
Dim number As Integer = 3
Select Case number
Case 1, 2
Console.WriteLine("少数です")
Case 3 To 5
Console.WriteLine("中間の値です")
Case Else
Console.WriteLine("大きな値です")
End Select
Dim day As String = "水"
Select Case day
Case "月", "火", "水", "木", "金"
Console.WriteLine("平日です。学校や仕事があります。")
Case "土", "日"
Console.WriteLine("休日です。ゆっくり休みましょう。")
Case Else
Console.WriteLine("正しい曜日を入力してください。")
End Select
中間の値です
平日です。学校や仕事があります。
このように、範囲指定や複数値指定を活用すると、Select Case文は条件分岐を整理してわかりやすく書けます。
生徒
「先生、Select Case文はIf文より見やすくなるんですね。」
先生
「その通りです。特に条件が多い場合や、範囲や複数値をまとめて処理したい場合にはSelect Case文が便利です。」
生徒
「Case Elseを入れると、予期しない入力にも対応できるんですね。」
先生
「はい。これでプログラムがより安全になり、思わぬエラーを防ぐことができます。初心者でも安心して条件分岐を書けます。」
生徒
「範囲や複数値を指定できるので、点数や曜日、季節判定などもスッキリ書けるんですね。」
先生
「その通りです。Select Case文を上手に使うと、VB.NETのプログラムが読みやすくなり、保守性も向上します。最初は基本を押さえて、応用例を真似しながら慣れると良いでしょう。」