基础系列(5)—— C#控制语句

语句是程序中最小程序指令。C#语言中可以使用多种类型的语句,每一种类型的语句又可以通过多个关键字实现。以下是C# 语言中使用的主要控制语句

 类别       关键字                      

选择语句      if、else、switch、case

循环语句      do、for、foreach、in、while

跳转语句      break、continue、default、goto、return

异常处理语句    throw、try-catch、try-finally

检查和未检查语句  checked、unchecked

非保护和固定语句  unsafe、fixed

锁定语句      lock

一、选择语句

  选择语句根据某个条件是否成立,来控制程序的执行流程。有两种结构的选择语句:

    if-else 结构
   switch-case 结构 
(一) if-else 语句
  if-else 语句根据 Boolean 表达式的值选择要执行的语句。if-else 语句的形式为:   
       if (expression)
       statement1
    [else
       statement2]
  其中:expression 是 bool 类型的表达式,或者是可以隐式转换为bool类型的表达式,也可以是重载了 true 和 false 操作符的类型的表达式。statement1 是当 expression 为 true 时将要执行的语句。statement2 是当 expression 为 false 时将要执行的语句。如果想要执行的语句不止一个,可以通过使用 { } 将多个语句包含在块中,有条件地执行多个语句。这里的语句可以是任何种类的,包括嵌套在其中的另一个 if 语句。在嵌套的 if 语句中,else 子句将和离得最近的且没有 else 子句关联的if语句关联。例如:
    if (x > 10)
    if (y > 20)
        Console.Write("Statement_1");
    else
        Console.Write("Statement_2");
  在此例中,如果条件(y > 20)为 false,将显示 Statement_2。但如果要使 Statement_2 与条件 (x > 10) 关联,则使用大括号:
if (x > 10)
{
    if (y > 20)
        Console.Write("Statement_1");
}
else
    Console.Write("Statement_2");
  在此例中,如果条件(x > 10)为 false,将显示 Statement_2。还可以扩展if语句,使用下列else-if排列来处理多个条件:
if (Condition_1)
    Statement_1;
else if (Condition_2)
    Statement_2;
else if (Condition_3)
    Statement_3;
    ……
else
    Statement_n;
  其中:Condition 表示条件语句。Statement_n 表示条件 n 成立时要执行的语句。
(二)  switch-case 语句
  switch 语句是通过将控制传递给其内部的一个 case 语句来处理多个选择的流程控制语句。switch 语句的基本结构:
switch (<testVar>)
{
    case <comparisonVal1>:
        <如果<testVar>等于<comparisonVal1>时执行的语句>
        break;
    case <comparisonVal2>:
        <如果<testVar>等于<comparisonVal2>时执行的语句>
        break;
    ……
    case <comparisonValN>:
        <如果<testVar>等于<comparisonValN>时执行的语句>
        break;
    default:
        <如果没有与<testVar>匹配的<comparisonValX>时执行的语句>
        break;
}
  <testVar> 中的值与 case 语句中指定的每个 <comparisonValX> 值进行比较,如果有一个匹配,就执行为该匹配提供的语句。如果没有匹配,就执行 default 部分中的代码。执行完每个部分中的代码后,还须有一个 break 语句。在执行完一个 case 块后,再执行第二个 case 语句是非法的。
  break 语句将中断 switch 语句的执行,而执行该结构后面的语句。
  还有另一种方法可以防止程序流程从一个 case 语句转到下一个 case 语句。可以使用 return 语句。也可以使用 goto 语句,因为 case 语句实际上是在 C# 代码中定义标签。
  一个 case 语句处理完后,不能自由进入下一个 case 语句,但有一个例外。如果把多个 case 语句放(堆叠)在一起,其后加一行代码,实际上是一次检查多个条件。如果满足这些条件中的任何一个,就会执行代码,例如:
using System;
class SwitchTest
{
    static void Main()
    {
        int n = 2;
        switch(n)
        {
            case 1:
            case 2:
            case 3:
                Console.WriteLine("It's 1, 2, or 3.");
                break;
        default:
            Console.WriteLine("Not sure what it is.");
            break;
        }
    }
}
  输出:
It's 1, 2, or 3.
  每个 <comparisonValX> 都必须是一个常量。一种方法是提供字面值,另一种方式是使用常量。在这里使用常量可读性更好。

二、循环语句

  使用循环语句可以让程序多次执行相同的代码或代码块,这些代码或代码块称为循环体。对于任何一个循环体来说,都应该提供一个跳出循环的条件,不同的循环语句提供不同的条件。C# 语言中提供了以下4种循环语句:
    · dowhile
  · for
  · foreachin
  · while
(一)  do-while语句
  do 语句重复执行括在 {} 里的一个语句或语句块,直到指定的表达式为 false 时为止。do 循环的结构如下:
do
{
   statement
} while (expression);
  其中:expression 为 bool 类型的表达式,或者是可以隐式转换成 bool 类型的表达式,也可以是重载 true 和 false 操作符的类型的表达式。用来测试循环是否终止。statement 是需要循环执行的语句。do-while 结构先执行循体语句,然后判断 while 条件是否为 true。如果为 true,将循环执行;如果为 false,则退出循环。因此 do-while 循环结构中的语句至少要执行一次。while 语句后面的分号是必须的。
  示例:下面示例中,只要变量 y 小于 5,do 循环语句就开始执行。
// statements_do.cs
using System;
public class TestDoWhile
{
    public static void Main ()
    {
        int x = 0;
        do
        {
            Console.WriteLine(x);
            x++;
        }
        while (x < 5);
    }
}
  输出:
0
1
2
3
4
(二)for语句

      for语句通常用来让一条语句或一个语句块执行一定的次数。for语句的一般形式:

for ([initializers]; [expression]; [iterators])
{
   statement
}
posted @ 2018-03-22 22:12  StrugglingDave  阅读(1766)  评论(0编辑  收藏  举报