条件多分岐処理
Select Caseステートメントを使うと、複数の条件判定を、スマートにプログラミングできます。
Case句の条件式を満たす時は、最初に条件式を満たしたCase句だけが実行されます。
最後のCase Else句を省略すると、すべてのCase句の条件式を満たさなかった場合には、何も実行されません。
Case 条件判定式は、いくつでも指定することができますが、数が多かったり、条件判定式が複雑だと、エラー(バグ)の原因になります。そのあたりを注意してプログラミングしてください。
Select Caseと同様な制御文に、If 条件式 Then … ElseIf … End If があります。
Case句の便利な点は、If 条件式 Then … ElseIf … End If より幅広い条件判定式が書けることです。
いろいろな条件判定式が書ける
Case句では、いろいろな条件判定式が書けます。たとえば、範囲指定や、複数の条件を設定できます。
' 値の範囲指定ができる Case 120 To 200
' 複数の条件が指定できる Case 1 To 10, 20, 30, 40, Is >= 100
Select Case 句で指定した式(通常は変数、次のサンプルプログラムではinNum)が、Case句のIs条件式を満たしていれば、この Case句の処理が実行されます。
サンプルプログラムでは、Case Is < 0, Is >= 150 と、 Is キーワードを使っていますが、これは、inNum の値が 0 より小さいか、150以上の時に、この Case句が実行されます。
Case Is < 0, Is >= 150
しかし、条件式が多かったり、複雑だとエラー(バグ)の原因になります。事前によく整理して、すっきりした条件式を書くようにしましょう。
Select Case サンプルプログラム
キーボードから年齢を入力すると、Select Case句を使って、年齢に応じたメーッセージを表示するプログラムを作成します。
年齢は整数で入力します。キーボードから整数を入力する方法を参考にしてください。
ソースリストの枠内をクリックすると全選択できます。
Module Module1 Sub Main() ' 変数の宣言 Dim inStr As String = "" Dim inNum As Integer = 0 Dim msg As String = "" ' キーボードから年齢入力 Console.WriteLine("年齢を入力してください") inStr = Console.ReadLine() ' 文字列を整数に変換 inNum = Integer.Parse(inStr) ' 年齢を判定して処理を振分 Select Case inNum Case Is < 0, Is >= 150 ' 表示メッセージ msg = "年齢に誤りがあります" Case 0 To 17 msg = "まだ選挙権はありません" Case 18 msg = "選挙に行けます" Case 30, 40, 50 msg = inStr & "歳です。飲みすぎ注意" Case 19 To 59 msg = "散歩していますか" Case Else msg = "健康に気をつけましょう" End Select ' 結果を表示 Console.WriteLine(msg) End Sub End Module