C#中int x when条件语法是什么?switch相关资料在哪?
关于C#中switch语句里
int n when ...的语法说明 嘿,你碰到的是C#从7.0版本开始引入的模式匹配(Pattern Matching)结合when守卫子句的语法,用来给switch语句的case增加更灵活的匹配条件,我来给你拆解清楚:
1. int n when n>0 && n<5的语法构成
这个写法分成两个核心部分:
- 声明模式(Declaration Pattern):
int n的作用是先检查switch的目标表达式(也就是你代码里的i)是否可以隐式转换为int类型,如果匹配成功,就把i的值赋值给变量n,供后续条件判断使用。 - when守卫子句:
when n>0 && n<5是额外的布尔条件校验——只有当声明模式匹配成功,并且when后面的条件返回true时,这个case对应的代码块才会被执行。
2. 结合你的switch示例理解逻辑
拿你提到的代码片段来说:
switch (i) { case int n when n>0 && n<5: DoSth(); break; case int n when n>=5: // 执行其他逻辑 break; }
它的执行流程是:
- 首先判断
i是否是int类型,是的话把值赋给n; - 接着检查
n>0 && n<5是否成立,成立就执行DoSth(),然后跳出switch; - 如果第一个case的守卫条件不满足,会进入第二个case(这里第一个case已经匹配过
int类型,所以第二个case的int n语法上允许但存在冗余),然后检查n>=5的条件,满足就执行对应的逻辑。
3. 查阅资料的途径
你可以直接参考微软官方的C#文档:
- 搜索「C# 模式匹配」,能看到完整的模式类型、用法示例和版本演进说明;
- 专门搜索「C# switch语句中的when子句」,可以找到针对switch场景下守卫子句的详细讲解;
- 另外,C# 7.0是首次引入模式匹配和when守卫的版本,你也可以查看对应版本的语言特性更新文档,了解这个语法的设计初衷和使用场景。
内容的提问来源于stack exchange,提问作者thaarad
相关产品推荐
相关产品推荐

