我怎么把它变成一个switch语句?感谢

时间:2016-02-04 16:50:06

标签: c#

我是c#的新手,我只想通过改变它来清理它。

int studTempGrade = Console.ReadLine();

if (studTempGrade >= 90 & studTempGrade <= 200)
{
    aGrades= aGrades+1;
}

if (studTempGrade >= 80 & studTempGrade <= 89)
{
    bGrades = bGrades + 1;
}

if (studTempGrade >= 70 & studTempGrade <= 79)
{
    cGrades = cGrades + 1;
}

if (studTempGrade >= 60 & studTempGrade <= 79)
{
    dGrades = dGrades + 1;
}

if (studTempGrade >= 0 & studTempGrade <= 59)
{
    fGrades = fGrades + 1;
}

1 个答案:

答案 0 :(得分:1)

不幸的是,使用switch语句确实没有一种简单的方法可以做到这一点。切换案例只允许常量表达式,而不是通常的表达式。意思是,你不能做这样的事情:

switch(val)
{
    case 0 - 9:
        doThis();
        break;
    case 10 - 20:
        doThat();
        break;
    default:
        break;
}

C#不允许这样的事情,尽管它会很好。要通过开关实现您想要的效果,您必须放下所有200个案例(即0到200之间的等级值)。意思是,你会有这个:

switch(value) {
    case 0: 
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:         
        // do something
        break;
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20: 
        // do something
        break;
    case 21:
    case 22:
    case 23:
    case 24:
    case 25: 
    // ...and so on, you get the idea...

}

你这样做的方式很好,if语句没有错。但是,我建议将else if用于后续的if语句。所以你会有这个:

int studTempGrade = Console.ReadLine();

if (studTempGrade >= 90 & studTempGrade <= 200)
{
    aGrades= aGrades+1;
}
else if (studTempGrade >= 80 & studTempGrade <= 89)
{
    bGrades = bGrades + 1;
}
else if (studTempGrade >= 70 & studTempGrade <= 79)
{
    cGrades = cGrades + 1;
}
else if (studTempGrade >= 60 & studTempGrade <= 79)
{
    dGrades = dGrades + 1;
}
else if (studTempGrade >= 0 & studTempGrade <= 59)
{
    fGrades = fGrades + 1;
}

这将导致您的程序在第一个导致if的表达式后离开true结构,从而节省时间。