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 循环语句就从头履行。

 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 后停止循环。

 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 }

输出:

1

2

3

4

3.2  continue 语句

  在循环体中动用 continue 语句子以收目前的巡回,而进下同样赖的大循环。

  示例:在此示例中,计数器最初是自从 1 到 10 进行计数,但经以 continue 语句子与达式 (i < 9) 一起使用,跳了了 continue 与 for 循环体末尾中的说话。

 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 }

输出:

9

10

3.3  goto 语句

  goto 语句子以程序控制直接提交标记的语。

3.4  return 语句

  return 语句终止所当术的实行,并以次第的主宰返回给调用它的计。它还足以回来一个不过选值。如果措施吧 void 类型,可以简简单单 return 语句。

  return语句子之花样如下:

    return [expression];

  其中:

  expression 表示方法的回到值。当方法类型也 void 时无能够用 expression 参数。

4.1  checked 语句 

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

  默认情况下,如果表达式产生的价超出了靶项目的限定,则常数表达式将招致编译时错,而那个累表达式在运作时算并以抓住那个。不过,如果通过编译器选项或环境布置当全局范围外收回了溢出检查,则足以使 checked 关键字来启用这个起功能。

演示:此示例演示如何对老累表达式使用 checked。在运行时会见告诉溢起。 

 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 }

示范输出:

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 语句子。

 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 }

输出:

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无论怎么样,都见面执行.