2012-11-22 35 views

回答

14

嘗試使用數組,然後你可以使用包含擴展:

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,如果包含擴展不可用,你可以試試這個:

If Array.IndexOf(New String() {"Val1", "Val2", "Val3"}, RoleName) > -1 Then 
    'Go 
End If 
+0

謝謝您的回答,但它拋出: 「包含」不「的System.Array」的一員,我 已經找到了解決辦法,請更新你的答案: @ If(Array.IndexOf(New String(){「Val1」,「Val2」,「Val3」},RoleName)> -1)Then' – Alaa

+0

@Ala您必須使用較舊的框架(2.0?)。 – LarsTech

+0

.NET FRAMEWORK 3.5 – Alaa

9

你也可以使用一個Select..Case聲明:

Select Case RoleName 
    Case "Val1", "Val2", "Val3" 
     ' Whatever 
End Select 
+3

可讀性+1,即使它與其他答案相比有點無聊:) – MarkJ

13

您可以使用包含如圖所示通過LarsTech,但它也很容易添加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 
+1

+1僅用於創意! – MarkJ

相關問題