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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:13:53