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

vb.net <> or IsNot not working correctly

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

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

End If

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

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

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

即使 first_letter 等于 Pending

,if 中的代码 运行 是否有任何原因

原因是 "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,这将引发异常。

条件永远为真。无论变量包含什么字符串,它要么不同于空字符串,要么不同于字符串 "Pending".

如果变量包含"Pending",则不同于空字符串,条件的第一部分为真。

您应该改用 And 运算符:

If first_letter <> "" And first_letter <> "Pending" Then

此处条件错误。您使用了 Or 运算符。只需将 Or 替换为 And