Vb.net 如果使用或固定

Vb.net 如果使用或固定,vb.net,Vb.net,任何人都可以解释为什么VisualStudio不喜欢if语句中的or 我知道我可以通过使用elseif来完成同样的工作,但我正在努力理解or不起作用的原因 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim input As String = "asdcessssf" Dim count As Integer Dim total

任何人都可以解释为什么VisualStudio不喜欢if语句中的or

我知道我可以通过使用
elseif
来完成同样的工作,但我正在努力理解or不起作用的原因

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim input As String = "asdcessssf"
        Dim count As Integer
        Dim totalchar As Integer
        Dim final As Integer

        For Each ch As Char In input
            If ch = "a" Or "e" Then
                count += 1
                totalchar += 1

            Else
                totalchar += 1

            End If

        Next
        final = (count / totalchar) * 100
        MsgBox(final)
    End Sub
End Class

你以错误的方式描述了情况。这应该是
ch=“a”或ch=“e”
。在布尔比较中,

之后缺少
ch=
,Or运算符总是对这两个表达式求值,这可能包括进行过程调用。OrElse运算符(Visual Basic)执行短路,这意味着如果表达式1为真,则表达式2不计算。 您可以使用OrElse获得短路行为。

如“pmatyszok”所述,您在
之后缺少
“ch=“e”
,我建议您也优化代码,如下所示:

 For Each ch As Char In input
       If ch = "a" Or ch = "e" Then count += 1
        totalchar += 1
 Next

的正确语法是
如果ch=“a”或ch=“e”那么
我并不想听起来粗鲁,但我认为你有点漏掉了要点。代码失败的原因不是因为使用了
。这是因为他们没有检查
ch
是否真的等于
“e”“
。换言之,如果ch=“a”OrElse“e”
,这也会失败。这也一定是真的,我没有想到这一点。