pri*_*kar 45 c# switch-statement
我必须在switch声明中实现以下内容:
switch(num)
{
case 4:
// some code ;
break;
case 3:
// some code ;
break;
case 0:
// some code ;
break;
case < 0:
// some code ;
break;
}
Run Code Online (Sandbox Code Playgroud)
可以对switch语句进行评估case < 0吗?如果没有,我怎么能这样做?
Jon*_*eet 70
你不能 - 切换/案例仅适用于个别值.如果要指定条件,则需要"if":
if (num < 0)
{
...
}
else
{
switch(num)
{
case 0: // Code
case 1: // Code
case 2: // Code
...
}
}
Run Code Online (Sandbox Code Playgroud)
Max*_*Max 44
我知道这个话题已经很老了,但如果有人在C#7中仍然在寻找答案,那么这是可能的.这是一个例子:
switch (value)
{
case var expression when value < 0:
//some code
break;
case var expression when (value >= 0 && value < 5):
//some code
break;
default:
//some code
break;
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*ent 22
在 C# 命运的转折中,这种情况又回来了。如果您升级到 C# 9.0,您原来的 switch 语句现在将可以编译!C#9.0 在一般模式匹配中添加了关系模式,其中包括 switch 语句。
您现在可以做一些非常时髦的事情,如下所示:
var num = new Random().Next();
switch(num)
{
case < 0:
// some code ;
break;
case 0:
// some code ;
break;
case > 0 and < 10:
// some code ;
break;
case > 20 or (< 20 and 15):
// some code ;
break;
}
Run Code Online (Sandbox Code Playgroud)
请注意在最后一种情况下使用文字“and”和“or”,以允许 && 和 || 输入要编译的表达式。
要使用 C# 9,请确保在属性组中的 csproj 文件中将 XmlNode LangVersion 设置为最新或 9.0
例如
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Platforms>AnyCPU;x86</Platforms>
<Configurations>Debug;Release;Mock</Configurations>
<LangVersion>Latest</LangVersion>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
tbr*_*fni 13
您可以在switch语句的末尾执行类似的操作:
default:
if(num < 0)
{
... // Code
}
break;
Run Code Online (Sandbox Code Playgroud)
如果你的num不能小于零:
public int GetSwitch(int num) { return num < 0 ? -1 : num; }
switch(GetSwitch(num))
{
case 4: // some code ; break;
case 3:// some code ; break;
case 0: // some code ; break;
case -1 :// some code ; break;
}
Run Code Online (Sandbox Code Playgroud)
如果可以,请使用其他"不存在"的数字,例如int.MinValue.
进入2021年。
var res = num switch
{
4 => "It's four",
3 => "It's three",
0 => "It's zero",
< 0 => "It's negative",
_ => "It's something else"
};
Run Code Online (Sandbox Code Playgroud)
繁荣。
(公平地说,switch 表达式是 C# 8.0 的一项功能,所以不是真正的 2021 年。但似乎仍然很少有人知道它。)
你可以这样做
switch (mark)
{
case int n when n >= 80:
Console.WriteLine("Grade is A");
break;
case int n when n >= 60:
Console.WriteLine("Grade is B");
break;
case int n when n >= 40:
Console.WriteLine("Grade is C");
break;
default:
Console.WriteLine("Grade is D");
break;
}
Run Code Online (Sandbox Code Playgroud)
无论你想要与否,你都必须使用.Switch只能将您的值与常量值进行比较.
我能想到的唯一方法(我真的不推荐它)如下:
int someValue;
switch (Math.Max(someValue, -1))
{
case -1:
// will be executed for everything lower than zero.
break;
case 0:
// will be executed for value 0.
break;
case 1:
// will be executed for value 1.
break;
default:
// will be executed for anything else.
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64101 次 |
| 最近记录: |