VB中IF语句中的多个True条件

时间:2014-04-17 21:09:28

标签: vb.net

在if语句中是否可以有多个可以评估为true的条件?主要是速记,以节省一些时间:

示例:

if value = 1 or value = 9 or value = 3 or value = 17 Then return True

我想知道是否有这种效果(在MSDN中找不到)

if value = 1,9,3,17 Then return True

4 个答案:

答案 0 :(得分:2)

无法使用IF语句执行此操作,但您可以使用:

SELECT CASE value
    CASE 1, 3, 9, 17
        ' Do something
    CASE 2, 4
        ' Do another thing
    CASE ELSE
        ' Do something else
END SELECT

答案 1 :(得分:2)

如果它是一个return语句,你可以把它缩短一点;

Return value = 1 Or value = 9 Or value = 3 Or value = 17

此外,如果值在数组中,您可以使用Linq - 任何函数;

Dim value As Integer = 1
Dim values = New Integer() {1, 9, 3, 17}
Return values.Any(Function(number) number = value)

答案 2 :(得分:2)

您也可以尝试:

If (New List(Of Integer)(New Integer() {1, 3, 5, 7, 9}).Contains(value)) Then
    Return TRUE
End If

答案 3 :(得分:1)

你无法在VB中完成你想要的东西,但是你可以绕过它。这是一种方法。将您的值放入Array。您可以使用Array方法搜索IndexOf。如果IndexOf返回高于-1的数字,则在数组中找到该项。您需要在MSDN page上阅读一些问题。

Dim value As Boolean
Dim myList() As Integer = {1, 9, 3, 17}
If Array.IndexOf(myList, 12) > -1 Then
    value = True
Else
    value = False
End If

Console.WriteLine("Found: {0}", value)

您还可以将测试缩短为内联比较和分配,从而无需使用上面的If语句。

value = (Array.IndexOf(myList, 12) > -1)