我有一个vb.net应用程序,我使用此代码:
If first_letter <> "" Or first_letter <> "Pending" Then
End If
但它似乎没有用,如果我在这个if语句上面的MsgBox(first_letter)我得到Pending
所以这意味着它不应该运行if语句中的内容,但它确实
我也试过IsNot
代替<>
,但它仍然做同样的事情
是否有任何理由在if中运行代码,即使first_letter
等于Pending
答案 0 :(得分:4)
原因是"Pending"
已匹配第一个条件,因为它是<> ""
。
使用AndAlso
代替Or
:
If first_letter <> "" AndAlso first_letter <> "Pending" Then
End If
请注意,您应使用OrElse
和AndAlso
代替Or
和And
,因为这些是短路运营商。这意味着如果第一个条件已经True
/ False
,则它们不会评估第二个条件。如果你有类似的东西,这可能很重要:
Dim first_letter As String = Nothing
If first_letter IsNot Nothing AndAlso first_letter.StartsWith("P") Then
End If
如果您使用And
而不是AndAlso
,则会引发异常。
答案 1 :(得分:1)
条件总是如此。无论变量包含哪个字符串,它都将与空字符串不同或与字符串"Pending"
不同。
如果变量包含"Pending"
,那么它将与空字符串不同,并且条件的第一部分为真。
您应该使用And
运算符:
If first_letter <> "" And first_letter <> "Pending" Then
答案 2 :(得分:0)
这里的情况有误。您使用过Or
运算符。只需将Or
替换为And