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
我在某些 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