C#:选择语句

选择语句:根据表达式的值,从若干语句中选择一个来执行。

选择语句包含:if语句和switch语句。

if语句:根据布尔表达式的值,选择要执行的语句。

语法:

第一种:if (布尔表达式) 一条嵌入式语句

示例:

static int MaxValue(int valuea, int valueb)
{
    if (valuea > valueb)
        return valuea;
    return valueb;
}

上面的方法,想要表达的意图是,返回两个数中较大的一个。return和valuea组合形成了表达式语句--表达式语句可以作为嵌入式语句,从语法上来看复合if语句的语法。

第二种:if (布尔表达式) 一条嵌入式语句 else 一条嵌入式语句

示例:

static int MaxValue(int valuea, int valueb)
{
    if (valuea > valueb)
        return valuea;
    else
        return valueb;
}

这是一个if语句的第二种形式的运用,因为第一种单使用if的代码阅读起来效果并不好。当不满足条件时,使用else分支能让别人阅读起代码来清晰明了。

示例:输入学生成绩,使用if...else语句,达到下面目的:0~59 不及格、60~79 良好、80~100优秀。

private static string PrintScore(int score)
{
    if (score>=80&&score<=100)
    {
        return "优秀";
    }
    else
    {
        if (score>=60&&score<80)
        {
            return "良好";
        }
        else
        {
            if (score>=0&&score<60)
            {
                return "不及格";
            }
            else
            {
                return "异常数据";
            }
        }
    }
}

调用这个方法,传入成绩为:40分、60分、80分、101分进行测试:

var res= PrintScore(80);
Console.WriteLine(res);

输出结果:不及格、良好、优秀、异常数据。

虽然上面的代码完成了题目要求,但是代码却有要优化的地方:第一个else分支后面跟着的其实是一个块语句,而块语句中的大段代码其实只是一个if语句。所以我们可以把{}去掉,将if语句直接写在else后面。这在语法上是没有问题的,所以我们可以把代码简化成:

private static string PrintScore(int score)
{
    if (score>=80&&score<=100)
    {
        return "优秀";
    }
    else if (score >= 60 && score < 80)
    {
        return "良好";
    }
    else if (score >= 0 && score < 60)
    {
        return "不及格";
    }
    else
    {
        return "异常数据";
    }
}

上面的形式,其实是if..else if形式。我们只不过推演了一下它是怎么来的。

switch语句:选择一个要执行的语句列表,这个列表具有一个相关的switch标签,这个标签对应switch表达式的值。

语法:switch (表达式) switch块。

使用switch来完成,上面if语句完成的输出成绩等级的功能。

示例:

static string PrintScoreWithSwitch(int score)
{
    switch (score/10)
    {
        case 8:
        case 9:
        case 10:
            return "优秀";
        case 7:
        case 6:
            return "良好";
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            return "不及格";
        default:
            return "输入有误";
    }
}

以上代码,也能实现根据成绩输出等级的功能。当然为了让代码能够更加完善,我们还需要加上一个数值范围的判断。

static string PrintScoreWithSwitch(int score)
{
    if (score >= 0 && score <= 100)
    {
        switch (score / 10)
        {
            case 8:
            case 9:
            case 10:
                return "优秀";
            case 7:
            case 6:
                return "良好";
            default:
                return "不及格";
        }
    }
    else
    {
        return "异常数据";
    }
}

关于switch语句,我们可以发现某些情况下,他完全能够替代if语句。

使用switch语句时要注意在每一个case 标签后都要设置一个break等关键字,来防止贯穿。如果不进行这样的操作,C#是不允许我们的代码编译通过的:

switch语句匹配的表达式的值如果是枚举类型的时候,通过VS的智能填充我们可以快速实现switch骨架的编写:

上面的操作步骤是,先键入 switch 然后按两下TAB键;接下来输入 待匹配的值 case_value;最后按下回车键就可以了。

以上便是对选择语句的回顾总结,记录下来以便以后查阅。

原文地址:https://www.cnblogs.com/bigbosscyb/p/13593923.html