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 

1.标准化语句

1.1  if – else

if (expression){}else{},其中expression是一个布尔类型,true则执行第一区块,false则执行else部分,使用那几个语句有多少个要验证的地点:

A.如果if或else区块部分唯有一行,可以概括{}区块符,例如:

  int a,b,c;

  if(a==b)

     c++;

  else

     c–;

B.对于多少个原则判断可以使用if (expression){}else if(expression){}else{}

C.可以拔取if else 嵌套

D.尽量防止使用多重嵌套和连续使用if

E.多重嵌套和高频if的情事,推荐使用上边的switch case语句

1.2  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;

}

申明: break 语句将刹车 switch 语句的履行,而举办该社团前面的讲话。还有另一种方法可以预防程序流程从一个 case 语句转到下一个 case 语句。可以行使 return 语句。也得以动用 goto 语句,因为 case 语句其实是在 C# 代码中定义标签。若是把五个 case 语句放(堆叠)在一起,其后加一行代码,实际上是三回检查多个标准化。假使满足那一个标准中的任何一个,就会执行代码,例如:

           int n = 2;
 7         switch(n)
 8         {
 9             case 1:
10             case 2:
11             case 3:
12                 Console.WriteLine("It's 1, 2, or 3.");
13                 break;
14         default:
15             Console.WriteLine("Not sure what it is.");
16             break;
17         }

输出:

It’s 1, 2, or 3.

2.循环语句

2.1 for

for语句普通用来让一条语句或一个语句块执行一定的次数。

for语句的形似格局:

for ([initializers]; [expression]; [iterators])

{

   statement

}

2.2 foreach 

foreach 语句为数组或对象集合中的每个元素执行三次循环体。寻常用来遍历某个集合,以赢得所需音讯,但不应用于转移集合内容以防止生出不可预见的副作用。

语法:

foreach (type identifier in expression)

{

    staterment

}

(1)  foreach在数组中的使用

  该语句提供一种简单、明了的形式来循环访问数组的要素。

  例如,上边的代码创建一个名为 numbers 的数组,并用 foreach 语句循环访问该数组:

1 int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
2 foreach (int i in numbers)
3 {
4     System.Console.WriteLine(i);
5 }

  对于多维数组,使用嵌套的for循环能够更好地操纵数组元素。

(2)  foreach 在集结中的使用

  当对聚集使用 foreach 语句时,该集合必须满意一定的规格。

  例如上面的 foreach 语句:

foreach (ItemType item in myCollection)

myCollection 必须知足上面的渴求。

  集合类型:

  必须是 interface、class 或 struct。

  必须概括一个誉为 GetEnumerator 的实例方法,该措施再次回到一个品种,比如 Enumerator。

  类型 Enumerator(类或结构)必须带有:

  一个名为 Current 的习性。类型为 ItemType 或可以转换成 ItemType 的门类。它的属性访问器重回集合中的当前元素。

  一个名为 MoveNext 的方式。该办法用于扩大计数器的值,借使集合中的元素个数小于计数器的值,该方式重临 true,否则重返 false。

2.3  do – while

  do 语句再次执行括在 {} 里的一个话语或语句块,直到指定的表明式为 false 时终结。

  do 循环的布局如下:

do

{

   statement

} while (expression);

do-while 结构先实施循体语句,然后判断 while 条件是不是为 true。即使为 true,将循环执行;假使为 false,则脱离循环。因而 do-while 循环结构中的语句至少要履行三回。

  while 语句前面的分公司是必须的。

以身作则:下边示例中,只要变量 y 小于 5,do 循环语句就从头实施。

C语言 1

 1 using System;
 2 public class TestDoWhile
 3 {
 4     public static void Main ()
 5     {
 6         int x = 0;
 7         do
 8         {
 9             Console.WriteLine(x);
10             x++;
11         }
12         while (x < 5);
13     }
14 }
输出:0 1 2 3 4 

2.4  While

  当 while 语句中的判断标准为 true 时,循环体将直接循环执行。

  语法:

while (expression)

{

   statement

}

while 语句和 do-while 语句差距,do-while 是先举办循环体再判断标准,而 while 是先判断标准。假诺条件为 true,则执行循环体,否则将跳过循环体,执行 while 块前边的代码。由此,while 语句中的循环体可能举办 0 次或频仍。

  在 while 循环体中,可以采用 break、goto、reture 或 throw 语句跳出循环。即使要跳转到下四回巡回,可在循环体中应用 continue 语句。

3. 跳转语句

 跳转语句用于从程序的一个地点把推行控制转移到另一个地点,每一条跳转语句的使用都会增多程序执行流程的分支。

  C#言语中可利用以下4种跳转语句:

  · break

  · continue

  · goto

     · return

3.1  break 语句

  break 语句用于中止当前推行的循环或它所在的 switch 语句,把控制交给循环或 switch 结构后边的说话。

  示例:

  在此例中,条件语句包涵一个应当从 1 计数到 100 的计数器;但 break 语句在计数达到 4 后停下循环。

C语言 2

 1 using System;
 2 class BreakTest
 3 {
 4     static void Main()
 5     {
 6         for (int i = 1; i <= 100; i++)
 7         {
 8             if (i == 5)
 9             {
10                 break;
11             }
12             Console.WriteLine(i);
13         }
14     }
15 }

C语言 3

输出:

1

2

3

4

3.2  continue 语句

  在循环体中利用 continue 语句将终结近期的巡回,而进入下三次的巡回。

  示例:在此示例中,计数器最初是从 1 到 10 进行计数,但经过将 continue 语句与发挥式 (i < 9) 一起利用,跳过了 continue 与 for 循环体末尾之间的口舌。

C语言 4

 1 using System;
 2 class ContinueTest
 3 {
 4     static void Main()
 5     {
 6         for (int i = 1; i <= 10; i++)
 7         {
 8             if (i < 9)
 9             {
10                 continue;
11             }
12             Console.WriteLine(i);
13         }
14     }
15 }

C语言 5

输出:

9

10

3.3  goto 语句

  goto 语句将程序控制直接付出标记的说话。

3.4  return 语句

  return 语句终止所在艺术的实践,并将顺序的操纵再次回到给调用它的主意。它还是可以再次回到一个可选值。倘诺措施为 void 类型,可以概括 return 语句。

  return语句的款型如下:

    return [expression];

  其中:

  expression 表示方法的重回值。当方法类型为 void 时不可能利用 expression 参数。

4.1  checked 语句 

  checked 关键字用于对整型算术运算和转换显式启用溢出检查。

  默认意况下,借使表达式暴发的值超越了对象项目的限定,则常数表明式将招致编译时不当,而尤其数表明式在运作时计算并将引发那些。不过,若是经过编译器选项或环境布署在大局范围内废除了溢出检查,则可以利用 checked 关键字来启用此项职能。

以身作则:此示例演示怎么样对充裕数表明式使用 checked。在运作时会报告溢出。 

C语言 6

 1 using System;
 2 class OverFlowTest
 3 {
 4     static short x = 32767;   // short类型的最大值
 5     static short y = 32767;
 6     // 对表达式使用 checked
 7     static int CheckedMethod()
 8     {
 9         int z = 0;
10         try
11         {
12             z = checked((short)(x + y));
13         }
14         catch (System.OverflowException e)
15         {
16             Console.WriteLine(e.ToString());
17         }
18         return z;
19     }
20     static void Main()
21     {
22         Console.WriteLine("Checked output value is: {0}",
23                      CheckedMethod());
24     }
25 }

C语言 7

以身作则输出:

System.OverflowException: Arithmetic operation resulted in an overflow.

   at OverFlowTest.CheckedMethod()

Checked output value is: 0

 

4.2  unchecked 语句 

  unchecked 关键字用于裁撤整型算术运算和更换的溢出检查。

  在非检查景况下,要是说明式发生目的项目范围之外的值,则结果被截断。例如:

1 unchecked
2 {
3     int val = 2147483647 * 2;
4 }

  因为上边的测算在 unchecked 块中实践,所以结果对于整数来说太大这一实际被忽视,并且 val 被赋予值 -2。默许景况下,启用溢出检测,那与运用 checked 具有同样的效率。

  在地点的示范中,即便省略 unchecked,将时有暴发编译错误,因为表明式使用常数,结果在编译时是已知的。unchecked 关键字还裁撤对丰富数表达式的溢出检测,这是为了避免在运行时造成 OverflowException。

  unchecked 关键字仍是可以用作运算符,如下所示:

1 public int UncheckedAdd(int a, int b)
2 {
3     return unchecked(a + b);
4 }

  示例:此示例通过在常数表明式中使用 unchecked,突显怎么接纳 unchecked 语句。

C语言 8

 1 using System;
 2 class TestClass
 3 {
 4     const int x = 2147483647;   // Max int
 5     const int y = 2;
 6     static void Main()
 7     {
 8         int z;
 9         unchecked
10         {
11             z = x * y;
12         }
13         Console.WriteLine("Unchecked output value: {0}", z);
14     }
15 }

C语言 9

输出:

Unchecked output value: -2

5.  非保养和固化

  C# 中的语句可以在保安和非爱惜环境中运作,默许状态为爱惜环境。使用带指针的代码需求运行在非爱护环境中。

  关键字 unsafe:指定非敬重环境。

  使用了指向变量的指针,该变量就无法在内存中活动地点。那时,可应用fixed语句“固定”住那几个变量。

  关键字 fixed:幸免变量重新定位。

6.  锁定语句

  lock 关键字将语句块标记为临界区,方法是收获给定对象的互斥锁,执行语句,然后释放该锁。

7. 这几个处理语句 

 try – catch – finally

try里面是实施代码,其中的代码”可能”发生格外.
catch是对发出非凡后的处理代码,可以抛出十分,也能够来得非常,也可以弹出某中提拔,由此可见catch里是其他代码都行,即使你了然那钟非常爆发的原委,可以打印此原因,也可以对此原因开展相应的拍卖,同时可以为多个catch,每个catch(分外类型) 用七个catch来捕获多种要命,也得以用所有特其余父类来捕获(那样就不要写几个catchl了).
设若try中生出了万分,那么try从爆发至极起头到try甘休的那段代码将不会举行,转而去执行catch.
finally是try执行完后举行(没暴发尤其)或者在catch后实施(暴发了尤其),也就是说finally无论怎么着,都会执行.