Select Case 语句在使用枚举时选择了意外条件

Select Case statment is chosing an unexpected condition when using enumeration

我在某些 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 条件,我似乎无法弄清楚为什么。

有没有人看出我遗漏了一些明显的错误?

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

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

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

希望对您有所帮助,这是 Microsoft 文档,https://msdn.microsoft.com/es-mx/library/s2dy91zy.aspx