case / switch语句c#?
我不知道如何在c#中编写它。 我知道如何在Delphi中做到这一点。
这是我如何在Delphi中完成的:
Case Total of
80..100 : ShowMessage ('You got an A!');
60..79 : ShowMessage ('You got a B!');
50..59 : ShowMessage ('You got a C!');
40..49 : ShowMessage ('You got a D!');
0..39 : ShowMessage ('You got an E...');
end;
我已经阅读过这个教程,但我不知道如何以我需要的方式使用/编写它。
这是我在C#中的版本:
switch (Total) //'Total' is a bunch of Integers divided together to get a Percentage
{
case 80..100: //Where 80% to 100% would achieve an A
{
MessageBox.Show("You got an A!");
}
case 60..79: //Where 60% to 79% would achieve a B
{
MessageBox.Show("You got a B!");
}
这可能吗?
谢谢。
要在C#中的switch / case
语句中表示范围,您必须手动列出这些个案
switch (Total) {
case 80:
case 81:
...
case 100:
MessageBox.Show("you got an A");
break;
...
}
对于这样的大范围,尽管使用一系列if
语句可能会更好
if (Total >= 80 && Total <= 100) {
MessageBox.Show("you got an A");
} else if (Total >= 70) {
MessageBox.Show("you got a B");
}
C#没有特别灵活的switch语句。 这是故意的,选项是有限的,以确保代码生成速度很快。 C#从来不是一种隐藏执行成本的语言。 运行时实现是通过一个跳转表,由switch()表达式索引。 非常快,但不是很灵活。
另一种方法是明确的if / else if链。 与VB.NET或Delphi编译器生成的完全相同的代码,但是由人工编写。 不是非常漂亮,但足够有效:
if (Total < 0 || Total > 100) throw new ArgumentException("Not a valid grade");
if (Total >= 80) ShowMessage ('You got an A!');
else if (Total >= 60) ShowMessage ('You got a B!');
else if (Total >= 50) ShowMessage ('You got a C!');
else if (Total >= 40) ShowMessage ('You got a D!');
else ShowMessage ('You got an E...');
这现在也显示了与代码相关的成本,总计值最多可以进行6次比较。 如果速度很重要,范围有限,那么考虑切换到一个查找表,一个字典<>。 ShowMessage()不是必需的,它是一个昂贵的方法。
如果它应该是一个开关,那么它应该是这样的:
switch(Total)
{
case 100:
case 99:
//...
case 80:
MessageBox.Show("You got an A!");
break;
case 79:
// ...
}
如果可以使用if语句,我会推荐这样做:
if (Total < 0)
{
}
else if (Total < 40)
MessageBox.Show("You got an E...")
else if (Total < 50)
MessageBox.Show("You got a D!");
else if (Total < 60)
// etc.
跳你可以使用这个答案。
链接地址: http://www.djcxy.com/p/84453.html