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无论怎么着,都会执行.

相关文章