我正在写一个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
答案 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