You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中switch语句case块多枚举值的语法是否存在?

PowerShell枚举多值Switch Case的正确用法

PowerShell原生支持针对枚举的多值case块语法,你之前的代码失效是因为case条件的写法有误——直接写枚举成员名称(比如Apple)会被PowerShell当作字符串处理,而$myFruit是枚举类型实例,字符串与枚举实例的比较不匹配。

正确的写法是在case中使用完整的枚举成员引用,这样比较的是枚举的底层整数值,既保留了枚举的标签特性,又能保持switch的高效性:

enum Fruit {
    Apple
    Banana
    Orange
}

# 假设$UsrString是用户输入的枚举名称字符串
$myFruit = [Fruit]::$UsrString

switch ($myFruit) {
    [Fruit]::Apple, [Fruit]::Orange {
        Write-Host "This is an apple or an orange"
        break
    }
    [Fruit]::Banana {
        Write-Host "This is a banana"
        break
    }
    default {
        Write-Host "Unknown fruit: $myFruit"
        break
    }
}

如果觉得完整引用太繁琐,可以提前将枚举成员赋值给变量简化代码:

enum Fruit {
    Apple
    Banana
    Orange
}

$apple = [Fruit]::Apple
$orange = [Fruit]::Orange
$banana = [Fruit]::Banana

$myFruit = [Fruit]::$UsrString

switch ($myFruit) {
    $apple, $orange {
        Write-Host "This is an apple or an orange"
        break
    }
    $banana {
        Write-Host "This is a banana"
        break
    }
    default {
        Write-Host "Unknown fruit: $myFruit"
        break
    }
}

这种写法完全基于枚举的底层整数值进行比较,不会退化为字符串匹配,完美满足你对高效性和枚举标签特性的需求。

内容的提问来源于stack exchange,提问作者BentChainRing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:19