C#入门级进阶教程|C#语句

目录

1.C#的基本语句

1.1块语句

1.2空语句

1.3声明语句

1.4表达式语句

2.选择语句

2.1if语句

2.2if框架

2.3if else if框架

2.4嵌套的if语句

2.5switch语句

3.循环语句

3.1 for循环语句

3.2 foreach循环语句

3.3 while循环语句

3.4 do-while语句

4.跳转语句

4.1  continue语句

4.2 break语句

4.3 return语句

4.4 goto语句

4.5  异常处理语句


1.C#的基本语句

1.1 块语句

        块语句把一系列语句包装成一个语句,块语句的一般格式如下:

{

一个或者多个语句;

}

1.2 空语句

        空语句是一种最简单的语句,它不实现任何功能,C#中空语句的形式如下:

             ;

1.3 声明语句

        声明语句主要完成对一个常量或者变量的声明,声明一个变量的语法结构如下:

  类型 [变量 [ = 表达式 ]];

1.4表达式语句

        表达式语句由表达式加上分号“;”组成。其一般形式为: 

   表达式;

2.选择语句

2.1 if语句

        if语句根据布尔表达式的值(true或者false)选择要执行的语句序列,使用时要注意else应和最近的if语句匹配。三种形式:         

if

if…else

if…else if…else

2.2 if框架

  形式:if (条件表达式)  语句;

        如果条件为真,则执行语句。在语法上这里的语句是指单个语句,若想执行一组语句,可加将这一组语句用“{”和“}”括起来构成一个块语句,当然在语法上块语句就是一条语句,下面涉及到语句都是这个概念。例如:       

if  ( x<0 )  x = -x ;   // 取x的绝对值

       if  (a+b>c && b+c>a && a+c>b)  // 判断数据合法性

       {   

                 p = (a+b+c)/2 ;

              // 求三角形面积                     

                  s = Math.Sqrt(p*(p-a)*(p-b)*(p-c));           }

        形式:       

 if (条件表达式) 

         语句1;
 else

         语句2;

        如果条件表达式为真,执行语句1;否则执行语句2。例如:      

if  (a+b>c && b+c>a && a+c>b) // 判断数据合法性

       {   

                  p = (a+b+c) / 2 ;                     

                  s = Math.Sqrt(p*(p-a)*(p-b)*(p-c)); // 求三角形面积

           }

           else

               Console.WriteLine("三角形的三条边数据有错!" ) ;

2.3 if else if框架

        形式:     

  if (条件表达式1)

              语句1 ;

       else if (条件表达式2)

                  语句2 ;

       else if (条件表达式3)

                  语句3 ;

       ……

  [ else

              语句n ;]

        这种语句执行时,从上往下地计算相应的条件表达式,如果结果为真则执行相应语句,跳过if_else if框架的剩余部分,直接执行if_else if框架的下一条语句;如果结果为假,则继续往下计算相应的条件表达式,直到所有的条件表达式都不成立,则执行这个语句的最后部分else所对应的语句,或者如果没有else语句就什么也不做。

        例:根据分数输出等级。成绩大于等于90分为“优秀”;大于等于80,小于90为“良好”;大于等于60,小于80为“及格”;小于60为“不及格”。 

if (studentGrade>=90)

           Console.WriteLine ("优秀");

else if (studentGrade>=80)

         Console.WriteLine ("良好");

else if (studentGrade>=60)

         Console.WriteLine ("及格");

else

         Console.WriteLine ("不及格");

2.4 嵌套的if语句

        在if语句框架中,无论条件表达式为真或为假,将要执行的语句都有可能又是一个if语句,这种if语句又包含if语句的结构就称之为嵌套的if语句。为了避免二义性,C#规定else语句与和它处于同一模块最近的if相匹配。例如:

        假设有一函数

下面是用嵌套的if语句写的程序片断。     

  y=0;

       if  (x>=0)

            if  (x>0)

                     y=1 ;

                else

                     y=-1;      

        这个else是与最近的if匹配,那么else的含义就是x=0的情况,所以这个程序逻辑上是错的。如果按这个结构写,应修正为:   

    y=0;

       if (x>=0)

       {    

              if (x>0)

                     y=1;

           }

    else       

              y=-1;      

2.5switch语句

        switch语句是一个多分支结构的语句,它所实现功能与if_else if结构很相似,但在大多数情况下,switch语句表达方式更直观、简单、有效。语法格式:     

  switch  (表达式) 

       {

            case  常量1:

                      语句序列1;   // 由零个或多个语句组成

                      break;

            case  常量2:

                      语句序列2;

                      break;

              ......

           default:        // default 是任选项,可以不出现

                语句序列n;

                break;

       }

         ①常量表达式

         switch条件表达式的值和每个case后的常量表达式可以是string、int、char、enum或其它值类型。

        ②语句序列

        每个case后的语句序列可以用大括号括起来,也可以不用,但是每个case块的最后一句一定要是break语句,或者是goto语句。

        ③switch语句的执行顺序

          a) 如果switch语句的条件表达式的值和某一个case标记后指定的值相等,则转到该case标记后的语句序列执行;

        b)若switch语句的条件表达式的值和任何一个case标记后指定的值都不相等,则跳到default标记后的语句序列执行;

        c)若switch语句下面没有default标记,则跳到switch语句的结尾。

        注意:

         a) 要求每个语句序列的最后一条语句必须是break语句,但是有一个情况例外:如果某个case块为空,则会从这个case块直接跳到下一个case块上。

         b) 如果case后有语句,则此case的顺序怎么放都无所谓,甚至可以将default子句放到最上面。因此,在一个switch中,不能有相同的两个case标记。

using System;

namespace SwitchExample

{

    public class Program

    {

        public static void Main()

        {

            Console.Write("请输入成绩:");

            //从键盘接收一行字符

            string str = Console.ReadLine();

            //转换为整型,注意此语句可能会产生异常,一般需要异常处理

            int i = Int32.Parse(str.Trim()); 

                  //或者int.Parse(…)或者Convert.ToInt32 (…)

            if (i > 100 || i < 0)

            {

                Console.WriteLine("成绩不在0-100范围内");

            }

   else

            {

                switch (i / 10)     //整除

                {

                    case 10:

                        Console.Write("满分,");

                        goto case 9;

                    case 9:

                        Console.WriteLine("优秀");

                        break;

                    case 8:

                    case 7:

                        Console.WriteLine("良好");

                        break;

                    case 6:

                        Console.WriteLine("及格");

                        break;

                    default:

                        Console.WriteLine("不及格");

                        break;

                }

            }

                    Console.ReadLine();

        }}}

3.循环语句

3.1 for循环语句

        C#的for循环是循环语句中最具特色的,它功能较强、灵活多变、使用广泛。语法形式:

for ( 表达式1;  表达式2;  表达式3 )

       循环体语句;

         一般情况下,表达式1是设置循环控制变量的初值; 表达式2是bool类型的表达式,作为循环控制条件;表达式3是设置循环控制变量的增值(正负亦可)。for语句执行流程如下图所示。

C#入门级进阶教程|C#语句_第1张图片

        例如:用for语句求
      

 static void Main(string[] args)

        {

            int Sum, i;

            Sum = 0;

            for (i = 1; i <= 100; i++)              // i每次加1

                Sum += i;

            Console.WriteLine("Sum is " + Sum);

            Sum = 0;

            for (i = 100; i > 0; i--)         // i也可以每次减1

                Sum += i;

            Console.WriteLine("Sum is " + Sum);

            Console.ReadLine();

        }

        for循环的一些变化特点:

        (1)for循环语句,表达式1和表达式3可引入逗号运算符“,”,这样可以对若干个变量赋初值或增值。

【例】用for语句求 1到100的累加和。      

 static void Main(string[] args)

        {

            int Sum, i;

            for (Sum = 0, i = 1; i <= 100; i++)

                Sum += i;

            Console.WriteLine("Sum is " + Sum);

            for (Sum = 0, i = 1; i <= 100; Sum += i, i++)

                ;     // 循环体是一空语句

            Console.WriteLine("Sum is " + Sum);

            Console.ReadLine();

        }

        (2)for循环的三个表达式可以任意缺省,甚至全部缺省,如果表达式2缺省就约定它的值是true。但不管哪个表达式缺省,其相应的分号“;”不能缺省。

        (3)可在for循环内部声明循环控制变量。

        如果循环控制变量仅仅只在这个循环中用到,那么为了更有效地使用变量,也可在for循环的初始化部分(表达式1)声明该变量,当然这个变量的作用域就在这个循环内。

3.2 foreach循环语句

        ①语句的格式为:

        foreach(类型 标识符 in 表达式)

               语句块;

string[] A = { "时有四季", "月有亏盈", "日有远近","天有长短" };

foreach(string temp in A )

{

       Console.WriteLine(temp);

}

3.3 while循环语句

        与for循环一样,while也是一个预测试的循环。如果其测试条件的值等于false,while循环就不会执行,其语法是类似的,但是while循环只有一个表达式:

                while(循环测试条件)

                        语句块;

C#入门级进阶教程|C#语句_第2张图片

        【例】 用while语句求 1-100的和:          

 static void Main(string[] args)

     {

         int Sum, i;

         Sum = 0; i = 1;

         while (i <= 100)

         {

             Sum += i;

             i++;

         }

         Console.WriteLine("Sum is " + Sum);

         Console.ReadLine();

     }

3.4 do-while语句

        do-while语句与while 语句不同的是它将内嵌语句执行至少一次或若干次:

do

{

    语句块;

} while(循环测试条件)

C#入门级进阶教程|C#语句_第3张图片

        

        【例】用do_while语句求 1-100的和。      

 static void Main(string[] args)

        {

           int Sum ,  i ;

           Sum=0;  i=1;

           do

           {

               Sum += i;

               i++;

           }

           while (i <= 100);

           Console.WriteLine ("Sum is " + Sum);

           Console.ReadLine();

        }

4.跳转语句

4.1  continue语句

        continue语句语法形式:

            continue;

        continue语句只能用于循环语句之中,它的作用是结束本轮循环,不再执行余下的循环体语句,对while和do_while结构的循环,在continue执行之后就立刻测试循环条件,以决定循环是否继续下去;对for结构循环,在continue执行之后,先求表达式3(即循环增量部分),然后再测试循环条件。

        【例】把1~100之间能被3整除的数输出。

static void Main(string[] args)

{

     for (int n = 1; n <= 100; n++)

     {

         // 如果n不能被3整除,则直接进入下一轮循环

          if (n % 3 != 0)

             continue;

         // 只有能被3整除的数,才会执行到此

         Console.WriteLine(n);  

      }

      Console.ReadLine();

 }

4.2 break语句

        break语句语法形式:

            break;

        break语句只能用于循环语句或switch语句中,如果在switch语句中执行到break语句,则立刻从switch语句中跳出,转到switch语句的下一条语句;如果在循环语句执行到break语句,则会导致本层循环立刻结束。

        【例】求1~100之间所有素数。

        注解:素数:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,即该数除了1和它本身以外不再有其它的因数。

static void Main(string[] args)

 {

      int m, k, n = 0;

       for (m = 2; m < 100; m++)

       {

           for (k = 2; k < m; k++)

           {

              if (m % k == 0)

                   break;

           }

           if (k >= m)

           {

               Console.Write("{0,-4}",m);

              if (++n % 10 == 0)

                   Console.WriteLine("\n");

           }

       }

 }

4.3 return语句

        ①return语句语法形式:

               return;

              或  

               return  表达式;

        return语句出现在一个方法内,在方法中执行到return语句时,程序流程转到调用这个方法处。

        【例】求1~100之间所有素数。

public static bool prime(int m)

{

       for (int i = 2; i < m; i++)

       {

            if (m % i == 0)

                return false;

        }

       return true;

}

static void Main(string[] args)

{

       int m,n = 1;

       Console.Write("{0,-4}", 2);

       for (m = 3; m < 100; m+=2)

       {

           if (prime(m))

           {

                 Console.Write("{0,-4}",m);

                 if (++n % 10 == 0)

                 {

                     Console.WriteLine("\n");

                 }

            }

        }

}

4.4 goto语句

        ①语法形式:

              goto  标号;

       其中标号就是定位在某一语句之前的一个标识符,这称为标号语句,它的格式是:

       标号:语句;

       它给出goto语句转向的目标。值得注意的是,goto 语句不能使控制转移到另一个语句块内部,更不能转到另一个函数内部。

       另外goto语句如果用在switch语句中,它的格式是:

       goto  case 常量;

       goto  default ;

        ②goto 语句

        goto语句可以直接跳转到程序中标签语句中,例如:       

goto lable1;
Console.WriteLine("This won’t be executed");
lable1:
Console.WriteLine("Continuing execution from here");

4.5  异常处理语句

        异常可以以两种不同的方式引发:

        throw 语句无条件即时的抛出异常;

        C#语句和表达式执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常。例如整数除法,操作分母为零时将抛出一个System.DivideByZeroException异常。

         ①throw语句

                throw语句格式:

    throw [表达式];

     抛出表达式的值。

     注意表达式类型必须是System.Exception或从System.Exception派生的类的类型。

     throw也可以不带表达式,不带表达式的throw语句只能用在catch块中,在这种情况下,它重新抛出当前正在由catch块处理的异常。

static void Main()

{

     string s = null;

     if (s == null)

     {

        throw new ArgumentNullException();

     }

     // not executed

     Console.Write("The string s is null");

}

        ②try语句

        在C#中的try语句提供了一种机制来捕捉块执行过程中发生的异常,以下是它的三种可能的形式:

        try -catch

        try –finally

        try -catch-finally

        ①try-catch语句     

   try

        {

            语句序列

        }

        catch(异常类型 标识符)

        {

            异常处理

        }

        在程序运行正常的时候,执行try块内的程序。如果try块中出现了异常,程序就转移到catch块中执行。

        ②try-catch-finally语句

try

{

    语句序列

}

catch(异常类型 标识符)

{

    异常处理

}

finally

{

    语句序列

}

static void Main()

{

     int x=10,y = 0;

     try

     {

         int z = x / y;

     }

     catch (Exception e)

     {

         Console.WriteLine("{0} Caught exception #1.", e);

     }

     finally

     {

         Console.WriteLine("Executing finally block.");

     }

}

你可能感兴趣的:(C#入门及进阶教程,c#,开发语言)