如果<> ......我错过了什么

时间:2017-11-10 21:54:48

标签: vb.net if-statement logical-operators

我找不到任何让我有理由认为这不起作用的东西。无论如何,这总是评估if语句中的代码。

我尝试将所有内容放入()我尝试用()分隔每个语句。无论它总是在if语句中运行代码。我错过了什么?

' Update by Adam W. Schneider 11/10/2017
If strDrawingSize <> "T" Or strDrawingSize <> "Y" Or strDrawingSize <> "Z" Or strDrawingSize <> "M" Or strDrawingSize <> "P" Or strDrawingSize <> "S" Or strDrawingSize <> "N" Or strDrawingSize <> "W" Or strDrawingSize <> "X" Or strDrawingSize <> "R" Or strDrawingSize <> "O" Then

    ' Update by Adam Schneider 08/24/2017
    cboRefDrawingSize.Text = cboDrawingSize.Text

End If

我知道这是一个丑陋的if语句,我试图在案例陈述中使用否定逻辑,但这也不起作用。

2 个答案:

答案 0 :(得分:2)

据我了解,您想检查strDrawingSize是否不是任何一个所需的字母。如果是这种情况,那么对所需的字母使用IndexOf方法进行比较,如果它是-1:

If "TYZMPSNWXRO".IndexOf(strDrawingSize) = -1 Then
    cboRefDrawingSize.Text = cboDrawingSize.Text
End If

小提琴:Live Demo

这是它的工作原理:本质上,String是Char值的集合,IndexOf方法返回集合内给定值的索引,如果找不到值,则返回-1。

答案 1 :(得分:1)

正如其他人所说,您的代码将始终执行,因为您使用的是OR而不是AND。

更简洁的方法是使用Select Case

Select Case strDrawingSize
    Case "T", "Y", "Z", "M", "P", "S", "N", "W", "X", "R", "O"
    Case Else
            ' Update by Adam Schneider 08/24/2017
            cboRefDrawingSize.Text = cboDrawingSize.Text
End Select