vb.net<>或者IsNot无法正常工作

时间:2015-01-27 11:42:39

标签: vb.net

我有一个vb.net应用程序,我使用此代码:

If first_letter <> "" Or first_letter <> "Pending" Then

End If

但它似乎没有用,如果我在这个if语句上面的MsgBox(first_letter)我得到Pending

所以这意味着它不应该运行if语句中的内容,但它确实

我也试过IsNot代替<>,但它仍然做同样的事情

是否有任何理由在if中运行代码,即使first_letter等于Pending

3 个答案:

答案 0 :(得分:4)

原因是"Pending"已匹配第一个条件,因为它是<> ""

使用AndAlso代替Or

If first_letter <> "" AndAlso first_letter <> "Pending" Then

End If

请注意,您应使用OrElseAndAlso代替OrAnd,因为这些是短路运营商。这意味着如果第一个条件已经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

即可