15

次のような関数や演算子はありますか?

        If RoleName in ( "Val1",  "Val2" ,"Val2" ) Then
        'Go
    End If

それ以外の:

    If RoleName = "Val1" Or RoleName = "Val2" Or RoleName = "Val2" Then
        'Go
    End If
4

3 に答える 3

24

配列を使用してみてください。次に、Contains 拡張機能を使用できます。

Dim s() As String = {"Val1", "Val2", "Val3"}
If s.Contains(RoleName) Then
  'Go      
End If

または宣言行なし:

If New String() {"Val1", "Val2", "Val3"}.Contains(RoleName) Then
  'Go
End If

OP から、Contains 拡張機能が利用できない場合は、これを試すことができます。

If Array.IndexOf(New String() {"Val1", "Val2", "Val3"}, RoleName) > -1 Then
  'Go
End If
于 2012-11-22T13:22:24.020 に答える
16

LarsTech で示されているように、Contains を使用できますが、In拡張メソッドを追加するのも非常に簡単です。

Public Module Extensions

    <Extension()> _
    Public Function [In](Of T)(value As T, ParamArray collectionValues As T()) As Boolean
        Return collectionValues.Contains(value)
    End Function

End Module

次のように使用できます。

If RoleName.In("Val1", "Val2", "Val3") Then
    'Go
End If
于 2012-11-22T14:31:17.030 に答える
15

Select..Case次のステートメントを使用することもできます。

Select Case RoleName 
    Case "Val1", "Val2", "Val3"
        ' Whatever
End Select
于 2012-11-22T13:24:21.877 に答える