选择案例陈述在使用枚举时会选择意外情况

时间:2015-10-01 17:29:30

标签: vb.net enums switch-statement

我在一些VB.Net代码中有以下枚举:

Private Enum DayOfWeek
    Sunday = 1
    Monday = 2
    Tuesday = 3
    Wednesday = 4
    Thursday = 5
    Friday = 6
    Saturday = 7
End Enum

我稍后会发出以下Select Case声明:

Dim weekDay As DayOfWeek

weekDay = DatePart(DateInterval.Weekday, Now)
Dim daysToAdd As Integer

Select Case weekDay
    Case DayOfWeek.Saturday Or DayOfWeek.Sunday
        daysToAdd = 0
    Case DayOfWeek.Thursday Or DayOfWeek.Friday
        daysToAdd = 4
    Case Else
        daysToAdd = 2
End Select

因此,当我运行代码时,weekDay设置为今天(星期四)的正确值(5)。但是,当它到达Select Case语句时,它会继续选择Case Else条件而不是DayOfWeek.Thursday条件,而我似乎无法弄清楚原因。

有没有人看到我错过的一些明显的错误?

2 个答案:

答案 0 :(得分:1)

不使用Or语句用于多个Case选项,而是使用逗号。

    Select Case weekDay
        Case DayOfWeek.Saturday, DayOfWeek.Sunday
            daysToAdd = 0
        Case DayOfWeek.Thursday, DayOfWeek.Friday
            daysToAdd = 4
        Case Else
            daysToAdd = 2
    End Select

答案 1 :(得分:-1)

我还没有尝试过您的代码,但它看起来像是一个转换问题,我知道VB非常智能地转换变量,但您应该尝试使用cInt()将weekDay转换为整数。

希望它有所帮助,这里有Microsoft Doc,https://msdn.microsoft.com/es-mx/library/s2dy91zy.aspx