如何在case语句c#中使用范围

时间:2015-09-16 13:29:24

标签: c# switch-statement

我想知道我在这里做错了什么:

string grade;
switch (percentageMark)
{
    case (90 - 100):
        grade = "A*";
        break;
    case (80 - 89):
        grade = "A";
        break;
    case (70 - 79):
        grade = "B";
        break;
    case (60 - 69):
        grade = "C";
        break;
    case (50 - 59):
        grade = "D";
        break;
    case (40 - 49):
        grade = "E";
        break;
    case (0 - 39):
        grade = "U";
        break;
}

我收到的错误是"标签'案例-9:'已经出现在这个switch语句"中,但仅限于案例3,4,5和6.有人可以告诉我为什么我会收到这些错误

3 个答案:

答案 0 :(得分:4)

你不能拥有范围。

你必须使用多个案例,如:

case 90:
case 91:
case 92:
case 93:
case 94:
...
...
case:100:
        grade = "A*";

或者您可以使用if语句来应用范围:

if(percentageMark >= 90 && percentageMark <=100)
   grade = "A*";

答案 1 :(得分:3)

由于Ehsan已经指出你不能在范围内使用范围。在您的情况下,使用if..else代替switch case似乎更好。

像这样:

if(percentageMark >= 90 && percentageMark <=100)
   grade = "A*";
else if(percentageMark >= 80)
   grade = "A";
else if(percentageMark >= 70)
   grade = "B";
else if(percentageMark >= 60)
   grade = "C";
else if(percentageMark >= 50)
   grade = "D";
else if(percentageMark >= 40)
   grade = "E";
else
   grade = "U";

答案 2 :(得分:1)

可悲的是,C#的开关不支持范围。

你必须使用if,以及其他情况。

对于你的代码,这将是这样的:

if (value >= 90 && value <= 100)
{
    // Your code
}
else if (value >= 80 && value < 90)
{
    // Your code
}
else if (value >= 70 && value < 80)
{
    // Your code
}

当然,如果你想使用一个开关,并且等级总是0到100之间的值,那么你可以使用这个开关:

switch(grade)
{
    case grade > 90:
        // A*
        break;
    case grade > 80:
        // B
        break;
}