在If语句中使用Or

时间:2014-08-07 08:00:17

标签: .net vb.net validation if-statement

我对vb.net编码很新。我搜查了一下,但我找不到能解答的东西。

If Number.Text = "974.823" Or Number.Text = "231.65" Or Number.text = "567.32" Or Number.text = "476.45" Or Number.text = "149.39" Or Number.text = "675.19" Then
    win.text = "Success"
Else
    Stop
End If

我尝试了OrElse,但它也没有用。

If Number.Text = "974.823" OrElse Number.Text = "231.65" OrElse Number.text = "567.32" OrElse Number.text = "476.45" OrElse Number.text = "149.39" OrElse Number.text = "675.19" Then 
    win.text = "Success" 
Else 
    Stop 
End If

3 个答案:

答案 0 :(得分:5)

首先,您发布的代码应该有效。它不起作用的唯一原因是Number.Text不等于你条件中的一个值(它是否有空格或其他一些字符?)

其次,如果你使用这样的数值,你应该比较数字数据类型而不是字符串。您可以使用TryParse确保值的类型正确。

第三,使用Case语句可以提高可读性,因为你有多个Or语句。

所以我会建议这样的事情:

    Dim d As Decimal

    'See if the value can be parsed into the appropriate numeric type. 
    'If not show an error
    If Not Decimal.TryParse(Number.Text, d) Then
        MsgBox("The value entered in invalid")
        Return
    End If

    'Use a Select Case statement comparing the Decimal with other values
    'The D after the number tells the compiler that this is a decimal value
    Select Case d
        Case 974.823D, 231.65D, 567.32D, 476.45D, 149.39D, 675.19D
            win.text = "Success"
        Case Else
            Stop
    End Select

答案 1 :(得分:0)

另一种机智怎么样?

Dim successCodes() as string = {"974.823", "231.65", "567.32", "476.45", "149.39", "675.19"}
If successCodes.Contains(Number.Text) Then
   win.text = "Success"
Else
   Stop
End If

如果您对OR进行了设置,请尝试将每个设置为parenthisis

If (Number.Text = "974.823") Or (Number.Text = "231.65") Or (Number.text = "567.32") Then
   win.text = "Success"
Else
   Stop
End If

自从我编写VB以来,已经很长时间了,因此对任何明显的语法错误表示道歉

答案 2 :(得分:0)

不确定您的问题是什么。但我会做一个List的字符串并检查它是否包含我想要的字符串。有了这个,我可以简单地使用Add方法添加我在后面使用的任何其他字符串。例如:acceptedNumber.Add("new value")

Dim acceptedNumber As New List(Of String)(New String() {"974.823", "231.65", "567.32", "476.45", "149.39", "675.19"})
If acceptedNumber.Contains(Number.Text) Then
    win.text = "Success"
Else
    Stop
End If

或者

Dim acceptedNumber As New List(Of String)
acceptedNumber.Add("974.823")
acceptedNumber.Add("231.65")
acceptedNumber.Add("567.32")
acceptedNumber.Add("476.45")
acceptedNumber.Add("149.39")
acceptedNumber.Add("675.19")
If acceptedNumber.Contains(Number.Text) Then
    win.text = "Success"
Else
    Stop
End If