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
请注意,您应该使用 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
,这将引发异常。
条件永远为真。无论变量包含什么字符串,它要么不同于空字符串,要么不同于字符串 "Pending"
.
如果变量包含"Pending"
,则不同于空字符串,条件的第一部分为真。
您应该改用 And
运算符:
If first_letter <> "" And first_letter <> "Pending" Then
此处条件错误。您使用了 Or
运算符。只需将 Or
替换为 And
我有一个 vb.net 应用程序,我在其中使用此代码:
If first_letter <> "" Or first_letter <> "Pending" Then
End If
但它似乎没有工作,如果我在这个 if 语句之上的 MsgBox(first_letter) 我得到 Pending
所以这意味着它不应该是 运行 这个 if 语句中的内容,但它确实是
我也试过 IsNot
代替 <>
但它仍然做同样的事情
即使 first_letter
等于 Pending
原因是 "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
,这将引发异常。
条件永远为真。无论变量包含什么字符串,它要么不同于空字符串,要么不同于字符串 "Pending"
.
如果变量包含"Pending"
,则不同于空字符串,条件的第一部分为真。
您应该改用 And
运算符:
If first_letter <> "" And first_letter <> "Pending" Then
此处条件错误。您使用了 Or
运算符。只需将 Or
替换为 And