【问题标题】:Select Case statment is chosing an unexpected condition when using enumerationSelect Case 语句在使用枚举时选择了意外条件
【发布时间】:2015-10-01 17:29:29
【问题描述】:

我在一些 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 条件,我似乎不知道为什么。

有没有人发现我遗漏了一些明显的错误?

【问题讨论】:

    标签: vb.net enums switch-statement


    【解决方案1】:

    不要对多个 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
    

    【讨论】:

    • 你明白了,太棒了。谢谢!我会尽快接受这个答案。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的反馈,但正如@NoAlias 的回答所指出的那样:我不能在Case 语句中使用Or,我必须改用逗号。
    猜你喜欢
    • 2012-04-30
    • 2015-10-02
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多