VB.NET Select Caseの基本的な使い方
Select Case文の基本的な使い方を紹介します。
VB.NET If,Else,ElseIf文の基本的な使い方でIf文の基本的な使い方について説明しましたが、ElseIfの数が増えてくると、可読性や保守性が悪くなってしまいます。
例えば以下のような分岐処理で、比較対象をaではなくa + 1やbなどに条件を変更したい場合、ElseIfの箇所をすべて修正する必要があります。
Dim a As Integer = 2
If a = 1 Then
Console.WriteLine("aは1です")
ElseIf a = 2 Then
Console.WriteLine("aは2です")
ElseIf a = 3 Then
Console.WriteLine("aは3です")
ElseIf a = 4 Then
Console.WriteLine("aは4です")
End IfElseIfの数が多いときはSelect Case文を使用することが多いです。
上記の処理をSelect Caseに置き換えると以下のようになります。
aを基準に各Caseの値と比較を行っていきます。
どのCaseにも当てはまらなかった場合はCase Elseの処理が実行されます。
Dim a As Integer = 2
Select Case a
Case 1
Console.WriteLine("aは1です")
Case 2
Console.WriteLine("aは2です")
Case 3
Console.WriteLine("aは3です")
Case 4
Console.WriteLine("aは4です")
Case Else
Console.WriteLine("aは1,2,3,4以外です")
End Select
'実行結果
'aは2ですSelect Case 値AとCase 値Bの値がイコールの場合に以降の処理が実行されます。
C言語やJavaScriptなどではswitch文に相当する構文です。
複数のCaseに該当する場合でも、最初に該当したCase処理のみ実行され、以降は無視されます。
Dim a As Integer = 2
Select Case a
Case 1
Console.WriteLine("aは1です")
Case 2
Console.WriteLine("aは2です")
Case 2
'実行されない
Console.WriteLine("aは2です!!")
Case 4
Console.WriteLine("aは4です")
End Select
'実行結果
'aは2ですJavaScriptではCase処理の最後にbreakコマンドを追加しなければ次のCase処理も実行されてしまいますが、VB.NETのSelect Case文ではbreakは不要です。
途中で処理を抜ける
使用する頻度はあまりありませんが、Case処理の中で、Select Case文を抜けるにはExit Selectを実行します。
Dim a As Integer = 2
Select Case a
Case 1
Console.WriteLine("aは1です")
Case 2
Console.WriteLine("aは2です")
End Select 'Select Case処理を抜ける
Console.WriteLine("aは2です!!")
Case 3
Console.WriteLine("aは3です")
End Select
'実行結果
'aは2です