Pau*_*els 15 c# switch-statement
有谁知道是否可以在switch语句中包含一个范围(如果是,如何)?
例如:
switch (x)
{
case 1:
//do something
break;
case 2..8:
//do something else
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
编译器似乎不喜欢这种语法 - 它也不喜欢:
case <= 8:
Run Code Online (Sandbox Code Playgroud)
And*_*lam 25
不,这是不可能的.我过去有过几种方法:
固定编码:
switch (x)
{
case 1:
//do something
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
//do something else
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
结合if {}声明:
switch (x)
{
case 1:
//do something
break;
default:
if (x <= 8)
{
// do something
}
else
{
// throw exception
}
break;
}
Run Code Online (Sandbox Code Playgroud)
虽然当我最初问这个问题时这是不可能的,但通过 C# 模式匹配的奇迹,现在它是(在 C# 7 中):
switch (i)
{
case var test when test <= 2:
Console.WriteLine("Less than 2");
break;
case var test when test > 2 && test < 10:
Console.WriteLine("Between 2 and 10");
break;
case var test when test >= 10:
Console.WriteLine("10 or more");
break;
}
Run Code Online (Sandbox Code Playgroud)
不,但你可以写这个,所以你至少要避免// do something else多次写这个部分.
switch (x)
{
case 1:
//do something
break;
case 2: case 3: case 4: case 5: case 6: case 7: case 8:
//do something else
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14625 次 |
| 最近记录: |