Select Case演算子は、式の値が1つまたは複数のケースに一致するかどうかをチェックするために使用されます。これは、複数のネストされたIf...ElseIfの代替であり、コードをよりクリーンで読みやすくします。
特徴:
Case 1 To 10)、個別の値(Case 2, 4, 6)、複雑な式(Case Is > 100)を含めることができます。複雑なケース:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("1から5まで") Case 6, 7, 8 Console.WriteLine("6から8まで") Case Is > 10 Console.WriteLine("10より大きい") Case Else Console.WriteLine("他の値") End Select
If...ElseIfとの違い:
If...ElseIfは、論理演算子を使用してより柔軟なチェックを構築できます。質問: 「Select Caseが文字列の値をチェックする際、大文字と小文字が異なるケースに対してどのように動作しますか?」
正しい答え: Select Caseにおける比較は、Option Compareパラメータを考慮して行われます。デフォルトでは、Visual Basicの比較は大文字と小文字を区別しません(Option Compare Text)、ただし変更可能です(Option Compare Binary)。Option Compare Binaryがオンの場合、"test"と"Test"は異なるものと見なされます。
例:
' ファイルの先頭に: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("動作しますか? いいえ") Case "Test" Console.WriteLine("動作しますか? はい") End Select
物語
在庫管理プロジェクトでは、Select Caseで数値IDを文字列として比較していました。データの再エンコード中に、一部のケースが異なるエンコーディングと大文字小文字の違いにより一致しなくなり、誤ったカテゴリ分けを引き起こしました。
物語
オンラインフォーラムの開発では、ユーザーレベルをチェックするために範囲Case 1 To 10を使用しましたが、境界値(Boundary Value)のチェックを間違えたため、status=10の場合にセクションが動作しませんでした。
物語
銀行アプリケーションでは、1つのCase内で2つの変数を同時にチェックしようとしました(Case a > 5 And b < 3)。コードはエラーでコンパイルされ、If...ElseIfに変更することで、操作のルーティングの論理のエラーが明らかになりました。