C#中能否以数组作为输入使用Switch表达式?语法求助
在C#中用Switch匹配数组的正确方式
你写的代码用了列表模式匹配数组,这个特性得C# 9.0及以上版本才支持,如果你的项目语言版本低于C# 9.0,这种写法肯定报错。
先解决版本问题
右键项目 → 属性 → 生成 → 高级 → 语言版本,选C# 9.0或者更高的版本(比如C# 10、11)。
语法优化与正确性验证
版本达标后,你原来的switch语句写法是合法的,但可以改成更简洁的switch表达式:
public static string EvaluateIt(int[] rawClusterValues) { return rawClusterValues switch { [0, 9, 4, 4, 4, 5] => "some result here", [1, 0, 0, 0, 0, 0] => "It is found", [3, 2, 0, 0, 0, 1] => "this is another result", _ => "result is default" }; }
关键注意点
- 列表模式匹配数组时,会严格卡元素数量和顺序,只有数组长度和模式里的元素个数完全一致,且每个对应位置的元素值都对得上,才会命中该分支。
- 如果要匹配长度不固定的数组,比如只关心开头几个元素,可以用通配符:
// 匹配以1开头、长度至少为1的数组 case [1, ..] => "Starts with 1", // 匹配长度为3,前两个元素是2和3的数组 case [2, 3, _] => "First two elements are 2 and 3",
内容的提问来源于stack exchange,提问作者Cem
相关产品推荐
相关产品推荐

