如果不被忽视

时间:2014-01-13 10:01:21

标签: vb.net if-statement

我正在写一个if not statement。当我正在调试时,它看起来应该可以工作,但事实并非如此。

infotypeid = 68
GlobalEnums.eInfoTypeID.myvar = 68 

但它仍在击中退出子:

If (Not infotypeid = GlobalEnums.eInfoTypeID.myvar OrElse Not infotypeid = GlobalEnums.eInfoTypeID.myvar2) Then
   Exit Sub
End If

2 个答案:

答案 0 :(得分:2)

我认为你需要AndAlso代替OrElse,因为前者毫无意义:

If (Not infotypeid = GlobalEnums.eInfoTypeID.myvar AndAlso Not infotypeid = GlobalEnums.eInfoTypeID.myvar2) Then

现在,If将输入这两个eInfoTypeID值。使用OrElse,您可以检查是否 eInfoTypeID.myvar,如果是true(这意味着 eInfoTypeID.myvar)你检查一下是不是其他的东西。

提高可读性的另一个选择是使用集合进行查找:

Dim wrongInfoTypes = {GlobalEnums.eInfoTypeID.myvar, GlobalEnums.eInfoTypeID.myvar2}
If Not wrongInfoTypes.Contains(infotypeid) Then
    Exit Sub
End If

答案 1 :(得分:1)

这是您的情况应该使用AndAlso而不是OrElse的问题。

If (Not infotypeid = GlobalEnums.eInfoTypeID.myvar AndAlso _
    Not infotypeid = GlobalEnums.eInfoTypeID.myvar2) Then
   Exit Sub
End If