有没有一种方法可以遍历多个case语句而不声明case value:重复?

我知道这可行:

switch (value)

{

case 1:

case 2:

case 3:

//do some stuff

break;

case 4:

case 5:

case 6:

//do some different stuff

break;

default:

//default stuff

break;

}

但我想做这样的事情:

switch (value)

{

case 1,2,3:

//Do Something

break;

case 4,5,6:

//Do Something

break;

default:

//Do the Default

break;

}

我是从其他语言考虑使用这种语法吗?还是我错过了某些内容?

#1楼

// @詹妮弗·欧文斯(Jennifer Owens):绝对正确,以下代码无法正常工作:

case 1 | 3 | 5:

//not working do something

唯一的方法是:

case 1: case 2: case 3:

// do something

break;

您正在寻找的代码可以在Visual Basic上运行,您可以轻松地将范围放在其中...在开关的任何选项中,或者如果不方便,我建议在极端情况下使用Visual Basic制作.dll并重新导入到您的C#项目。

注意:在Visual Basic中,等效开关为选择情况。

#2楼

我想这已经被回答了。 但是,我认为您仍然可以通过以下方法以语法上更好的方式混合使用这两个选项:

switch (value)

{

case 1: case 2: case 3:

// Do Something

break;

case 4: case 5: case 6:

// Do Something

break;

default:

// Do Something

break;

}

#3楼

最初的问题有点迟了,但是我发布这个答案是希望使用较新版本( C#7-Visual Studio 2017 / .NET Framework 4.6.2中默认提供 )的人会发现它会有所帮助。

在C#7中,现在可以使用switch语句进行基于范围的切换,这将有助于解决OP的问题。

例:

int i = 5;

switch (i)

{

case int n when (n >= 7):

Console.WriteLine($"I am 7 or above: {n}");

break;

case int n when (n >= 4 && n <= 6 ):

Console.WriteLine($"I am between 4 and 6: {n}");

break;

case int n when (n <= 3):

Console.WriteLine($"I am 3 or less: {n}");

break;

}

// Output: I am between 4 and 6: 5

笔记:

在when条件中不需要括号(和) ,但是在本示例中使用括号突出显示比较。

也可以使用var代替int 。 例如: case var n when n >= 7: 。

#4楼

如果您有大量的字符串(或任何其他类型),它们都在做相同的事情,我建议结合使用string List和string.Contains属性。

因此,如果您有一个很大的switch语句,例如:

switch (stringValue)

{

case "cat":

case "dog":

case "string3":

...

case "+1000 more string": //Too many string to write a case for all!

//Do something;

case "a lonely case"

//Do something else;

.

.

.

}

您可能想要用以下if语句替换它:

//Define all the similar "case" string in a List

List listString = new List(){ "cat", "dog", "string3", "+1000 more string"};

//Use string.Contains to find what you are looking for

if (listString.Contains(stringValue))

{

//Do something;

}

else

{

//Then go back to a switch statement inside the else for the remaining cases if you really need to

}

对于任何数量的字符串情况,此缩放比例都很好。

#5楼

这是完整的C#7解决方案...

switch (value)

{

case var s when new[] { 1,2,3 }.Contains(s):

//Do Something

break;

case var s when new[] { 4,5,6 }.Contains(s):

//Do Something

break;

default:

//Do the Default

break;

}

也可以使用字符串...

switch (mystring)

{

case var s when new[] { "Alpha","Beta","Gamma" }.Contains(s):

//Do Something

break;

...

}

c语言case多种情况,switch语句中有多种情况相关推荐

  1. python switch语句的多种实现方法

    python switch语句的多种实现方法 说明:  - python中没有switch关键字   - 定义 字典  - 调用 字典的get(key)获取对应的表达式 1,实现switch的一般方式 ...

  2. Go语言自学系列 | golang switch语句

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  3. C语言学习笔记:switch语句、循环语句--while、for、getchar,eof概念(推荐MSDN查询函数概念等)

    Switch语句:常用于多分支的情况 switch (整型表达式) { 语句项: } 其中,语句项是一些case语句,case可以放多个语句项: case 整型常量表达式: 语句: switch后面的 ...

  4. c语言case的流程图,switch…case 声明

    switch-case 声明 switch语句计算表达式,将表达式的值与case子句匹配,并执行与该case相关的语句. 以下是语法.switch(variable_expression) { cas ...

  5. c语言case的应用,switch、case的使用

    代码如下: #include main() { char c; printf("please input '0' to '9' ;"); c=getchar(); switch(c ...

  6. C语言基础编程(switch语句)

    给出一百分制成绩,要求输出成绩等级'A'.'B'.'C'.'D'.'E'.90分以上为'A' ,80~89分为'B' ,70~79分为'C'...#include<stdio.h>int ...

  7. 一个小案例理解case穿透、switch语句

    一.用case穿透简化代码以一个小案例为例:键盘录入星期数,输出工作日.休息日(1-5)工作日,(6-7)休息日 package test;import java.util.Scanner;publi ...

  8. C语言switch制作菜单例题,c语言入门之,switch语句习题。

    数学基础差学计算机语言还是比较吃力的, 还好有各位热心的同学帮忙解释, 十分感谢. 问题如下: #include int main() { int score = 87; //考试分数为87分 sco ...

  9. C语言CASE如何用switch,switch case 中如何使用枚举

    public enum ContractTempletEnum { PPT(1,"普通模板"),SIGNT(2,"签约模板"); private Integer ...

最新文章

  1. SSIS中代码页(Code Page)问题
  2. N - Is It A Tree?(判断环)
  3. python 基础教程:字符串内建函数之大小写的区别
  4. 用python爬取网页数据并存入数据库中源代码_Python爬取51cto数据并存入MySQL方法详解...
  5. 入门干货之Grpc的.Net 封装-MagicOnion
  6. LeetCode 1640. 能否连接形成数组(哈希)
  7. oracle应收模块核销点不上,详解EBS接口开发之应收款处理
  8. python编程入门第3版pdf-Python核心编程第3版PDF电子书免费下载
  9. THINKPHP获取路径
  10. HTML5+CSS3设计界面
  11. 假疫苗事件,错在企业,责任在管理部门
  12. iview tree 获取选中子节点的整条数据链
  13. vs2008的永久破解安装
  14. wnidows查看电脑序列号命令
  15. LiveZilla 详细 配置 设置 (三) 配置 LiveZilla 服务
  16. Recovered from a route's Handler('github.com/kataras/iris/mvc.(*ControllerActivator).handlerOf.func2
  17. 【CF724F】Uniformly Branched Trees 动态规划
  18. 2020年最全各省市矢量数据下载(含城市道路、铁路、高速、省道、县道、乡道等+河流水系网+建筑轮廓+铁路网等shp矢量数据+矢量量边界+wgs84坐标
  19. 互联网平台如何快速搭建内容安全审核系统?
  20. php 7.1 国内下载地址,PHP下载|PHP for windowsV7.1.4官方版

热门文章

  1. python网络编程之 一 socket(套接字)
  2. 在同一局域网内的同一工作组内登陆其中的机器时显示输入网络密码对话框
  3. ASP.NET中Server.MapPath() 和Request.MapPath()使用
  4. ASP.NET几种安全验证方法(一)
  5. 深度学习《VAE-GAN》
  6. python正则表达式中group
  7. [深度学习-实战篇]情感分析之卷积神经网络-TextCNN,包含代码
  8. 为什么两个controller的session的id不一样_我,为什么会离婚?我为什么离婚?
  9. 乘幂法、复化梯形以及二分法求特征值【相关例题python实现】
  10. Opencv--学习Opencv比较好的网址