【问题标题】:Select Case with another boolean check选择带有另一个布尔检查的案例
【发布时间】:2019-12-12 12:54:44
【问题描述】:

我知道如何毫无问题地选择案例。但是:

Dim xfld As Boolean
Dim ALP As String
xfld = True
ALP = "D"
Select Case ALP
    Case "A"
        MsgBox("A")
    Case "B"
        MsgBox("B")
    Case "D" And xfld
        MsgBox("D1")
    Case "E" And Not xfld
        MsgBox("E2")
    Case Else
        MsgBox("C")
End Select

如果可能,我想对 CASE 行进行额外检查。我知道我可以在其中做一个额外的 IF 语句,但考虑到我正在比较大约 10 种不同的东西,我宁愿不必在每一行中放置一个 IF 语句(如果 xfld 然后打印“E2” end if)。

我知道 AND 不起作用,并且 & 编译,但似乎没有做我想做的事。

有什么想法吗?

【问题讨论】:

  • 为什么不用 if/then 替换您的选择案例?
  • 如果有帮助,您可以使用 Select Case in a Case。

标签: vb.net select


【解决方案1】:

OP 上的两个 cmets 中的任何一个都可以工作。此外,您可以这样做。

    Dim xfld As Boolean
    Dim ALP As String
    xfld = True
    ALP = "D"
    Select Case True
        Case ALP = "A"
            MsgBox("A")
        Case ALP = "B"
            MsgBox("B")
        Case ALP = "D" AndAlso xfld
            MsgBox("D1")
        Case ALP = "E" AndAlso Not xfld
            MsgBox("E2")
        Case Else
            MsgBox("C")
    End Select

【讨论】:

  • 我总是忘记这样做。我以前看过,但忘记了。谢谢。
【解决方案2】:

使用逗号“,”而不是“And”或“&”。

Dim xfld As Boolean
Dim ALP As String
xfld = True
ALP = "D"
Select Case ALP
    Case "A"
        MsgBox("A")
    Case "B"
        MsgBox("B")
    Case "D", xfld
        MsgBox("D1")
    Case "E", Not xfld
        MsgBox("E2")
    Case Else
        MsgBox("C")
End Select

【讨论】:

  • 这不起作用,因为xfld 的值在这里没有影响。
猜你喜欢
  • 1970-01-01
  • 2020-04-04
  • 2016-10-05
  • 2023-04-05
  • 2012-06-22
  • 1970-01-01
  • 2015-08-16
  • 2021-09-21
  • 1970-01-01
相关资源
最近更新 更多