案例/转换语句c#?

Aid*_*inn 3 c# if-statement case

我没有生活线索如何在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;
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这方面的教程,但我不知道如何以我需要的方式使用/编写它.

这是我在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!");
            }
Run Code Online (Sandbox Code Playgroud)

这可能吗?

谢谢.

Jar*_*Par 9

switch / case在C#中的语句中表示范围,您必须手动列出案例

switch (Total) {
  case 80:
  case 81: 
  ...
  case 100:
    MessageBox.Show("you got an A");
    break;
  ...
}
Run Code Online (Sandbox Code Playgroud)

对于像这样的大范围,尽管使用一系列if语句可能更好

if (Total >= 80 && Total <= 100) { 
   MessageBox.Show("you got an A");
} else if (Total >= 70) { 
   MessageBox.Show("you got a B");
}
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 8

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...');
Run Code Online (Sandbox Code Playgroud)

现在这也显示了与代码相关的成本,Total值最多可以进行6次比较.如果速度是必要的并且范围有限,那么考虑切换到查找表,字典<>.这里没有必要,ShowMessage()是一种昂贵的方法.