2012-11-22 21 views

Trả lời

14

Hãy thử sử dụng một mảng và sau đó bạn có thể sử dụng chứa tiện ích:

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

Hoặc nếu không có sự dòng tuyên bố:

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

Từ OP, nếu Có phần mở rộng không có sẵn, bạn có thể thử này:

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

Cám ơn câu trả lời của bạn, nhưng nó ném: 'chứa' không phải là một thành viên của 'System.Array', Tôi đã tìm thấy một giải pháp, vui lòng cập nhật câu trả lời của bạn : 'If (Array.IndexOf (Chuỗi mới() {" Val1 "," Val2 "," Val3 "}, RoleName)> -1) Sau đó, ' – Alaa

+0

@Ala Bạn phải đang sử dụng khung cũ hơn (2.0?). – LarsTech

+0

NET FRAMEWORK 3.5 – Alaa

9

Bạn cũng có thể sử dụng một tuyên bố Select..Case:

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

+1 để dễ đọc, ngay cả khi nó hơi nhàm chán so với các câu trả lời khác :) – MarkJ

13

Bạn có thể sử dụng Có như bởi LarsTech, nhưng cũng rất dễ dàng để thêm phương thức mở rộng 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 

Bạn có thể sử dụng nó như thế này:

If RoleName.In("Val1", "Val2", "Val3") Then 
    'Go 
End If 
+1

+1 cho sự sáng tạo một mình! – MarkJ

Các vấn đề liên quan