C#程序设计自学经典
上QQ阅读APP看书,第一时间看更新

3.1 选择语句的应用

选择语句也叫作分支语句,选择语句根据某个条件是否成立来控制程序的执行流程。选择语句包括if语句和switch语句,除此之外,也可把第2章中提到的三元运算符作为分支技术的一种。下面就详细介绍这三种分支技术。

3.1.1 简单的if条件语句

C#中的if语句比较简单,其语法格式如下:

    if(条件表达式)
    {
        【代码块】
    }

if语句的执行过程如图3-1所示。

图3-1 if语句的执行过程

如果条件表达式的值为true,执行代码块,否则跳过if语句继续向下执行其他程序代码。

3.1.2 if…else…条件语句

if…else…语法格式如下:

    if(条件表达式)
    {
        【代码块a】
    }
    else
    {
        【代码块b】
    }

if…else…语句的执行过程如图3-2所示。

图3-2 if…else…语句的执行过程

如果条件表达式的值为true,那么执行代码块a中的代码,否则执行代码块b中的代码。

3.1.3 if…else if…else多分支语句

if…else if…else多分支语句的语法格式如下:

    if(条件表达式1)
    {
        【代码块a】
    }
    else if(条件表达式2) 
    {
        【代码块b】
    }
    else if(条件表达式3) 
    {
        【代码块c】
    }
    else 
    {
        【代码块d】
    }

if…else if…else多分支语句的执行过程如图3-3所示。

图3-3 if…else if…else多分支语句的执行过程

如果条件表达式1的值为true,那么执行代码块a中的代码,否则判断条件表达式2的值是否为true,如果为true,则执行代码块b中的代码,否则继续判断条件表达式3的值是否为true,如果为true,则执行代码块c中的代码,否则执行代码块d中的代码。

3.1.4 嵌套if语句

嵌套if语句的语法格式如下:

    if(条件表达式1)
    {
     if(条件表达式2)
     {
         【代码块a】
     }
     else
     {
         【代码块b】
     }
    }
    else 
    {
        if(条件表达式3)
        {
         【代码块c】
     }
     else
     {
         【代码块d】
     }
    }

嵌套if语句的执行过程如图3-4所示。

图3-4 嵌套if语句的执行过程

如果条件表达式1的值为true,接着判断条件表达式2的值,如果为true,就执行代码块a中的代码,否则执行代码块b中的代码。如果条件表达式1的值为false,接着判断条件表达式3的值是否为true,如果为true,则执行代码块c中的代码,否则执行代码块d中的代码。

3.1.5 switch多分支语句

switch语句与if语句非常类似,是通过将控制传递给其内部的一个case语句来处理多个选择的流程控制语句。C#中要求每个case和default语句中都必须有break语句,除非两个case中间没有其他语句,那么前一个case可以不包含break。此外,判断的表达式或变量可以是int、char或string等类型。

switch语句的基本格式如下:

    switch(条件表达式)
    {
        case 常量值1:
            代码块1;
            break;
        case 常量值2:
            代码块2;
            break;
    
        …
        case 常量值N:
            代码块N;
            break;
        default:
            缺省代码块;
            break;
    }

switch关键字后面的括号中是条件表达式,大括号中的代码是由若干个case子句所组成。条件表达式的值与每个常量值进行比较,如果有一个匹配,就执行为该匹配提供的代码块语句。如果没有匹配,就执行default部分中的代码。不论是否执行default最后都会执行break语句,使程序跳出switch语句。switch语句可以包含任意数目的case子句,但是任何两个case语句都不能具有相同的值。一个switch语句中只能有一个default标签。

一个case语句处理完成后,不能再进入下一个case语句了,但有一种情况例外,代码如下。

    switch(条件表达式)
    {
        case 常量值1:
        case 常量值2:
            代码块;
            break;
    
        …
        case 常量值N:
            代码块N;
            break;
        default:
            缺省代码块;
            break;
    }

把若干个case子句放在一起,在其后加一个代码块,实际上是一次检查多个条件,如果满足其中一个条件,就会执行代码块中的代码以及break语句。

3.1.6 三元运算符

三元运算符有三个操作数,其语法格式如下:

    <test>?<resultIfTrue>:<resultIfFalse>

其中,第一个操作数<test>可得到一个bool值,如果这个值为true,则结果为<resultIfTrue>,否则为<resultIfFalse>。

例如:

    String resultStr=(age>=18)?"你已经成年!":"你尚未成年!";

此例判断int类型的变量age是否大于等于18,如果是,则resultStr值为“你已经成年!”,否则为“你尚未成年!”。