zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET Select Caseの基本的な使い方

Select Case文の基本的な使い方を紹介します。

VB.NET If,Else,ElseIf文の基本的な使い方If文の基本的な使い方について説明しましたが、ElseIfの数が増えてくると、可読性や保守性が悪くなってしまいます。

例えば以下のような分岐処理で、比較対象をaではなくa + 1bなどに条件を変更したい場合、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 If

ElseIfの数が多いときは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 値ACase 値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.NETSelect 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です


関連記事

  • VB.NET YYYYMMDD形式の文字列を日付型に型変換する

    VB.NETでYYYYMMDD形式の文字列を日付型に型変換する方法を紹介します。最初にYYYY/MM/DDのように、年月日の区切りに/を追加します。/区切りの文字列にするとCDateで日付型に型変換で...


  • VB.NET YYYYMMDD書式の文字列が日付かどうか判定する

    VB.NETで、YYYYMMDD書式の文字列が日付として妥当かどうかを判定します。以下のように、Date.TryParseExactを使用して、日付型の文字列に変換可能かどうかで判定しています。Dat...


  • VB.NET 文字列の全角と半角の変換を行う

    VB.NETで文字列を全角→半角や半角→全角に変換するにはStrConv関数を使用します。StrConvの第1引数に対象文字列を指定し、第2引数に変換方法を指定します。


  • VB.NET TypeOfで変数の型判定・比較を行う

    VB.NETで変数の型をチェックするにはTypeOfを使用します。TypeOf チェックしたい変数名 Is 判定したい型の形式で指定します。


  • VB.NET StringBuilderの末尾の1文字を削除する

    StringBuilderで末尾の1文字だけ削除したいときは以下のようにします。位置の指定について、1文字目は0から始まるため、文字列の長さ(Length)-1の位置が末尾の位置となります。末尾の位置...


  • VB.NET 指定した文字列を削除する

    VB.NETで指定した文字列を削除する方法を紹介します。Replace関数は指定した文字列を別の文字列に置換する関数です。置換する文字列に空文字を指定すれば、指定した文字列が削除される形になります。J...


  • VB.NET 指定した桁数だけ同じ文字を文字列で定義する

    VB.NETで指定した桁数だけ同じ文字を文字列で定義する方法を紹介します。例えばオール9の10桁の文字列9999999999を定義するときに、9999999999を指定するのは、桁数を間違える危険があ...


  • VB.NET ダブルクォーテーションを文字列として扱う方法

    VB.NETで文字列を扱うときは以下のようにダブルクォーテーションで囲います。文字列の中にダブルクォーテーションを含めたい場合は少し工夫が必要です。以下のようにダブルクォーテーションを2つにすれば1つ...


  • VB.NET 文字列を数値に変換する方法

    VB.NETでString型の文字列を数値に変換する方法を紹介します。以下の例では、Integer型の数値に変換しています。文字列型の変数を数値型に変換する場合には以下に注意する必要があります。例えば...


  • VB.NET 文字列を連結する便利な方法まとめ

    VB.NETでは文字列の連結は文字列同士を&で結合できます。Visual Studio 2015からの新機能として文字列補間が可能になりました。以下のように、文字列の前に$をつけることにより、文字列の...