C#中的几种跳转语句

类别:.NET开发 点击:0 评论:0 推荐:

C#中的几种跳转语句

 

使用跳转语句执行分支,该语句导致立即传递程序控制。跳转语句中使用下列关键字:

 

break

continue

goto

return

 

//---------------------------------------------------------------------------

break 语句终止它所在的最近的封闭循环或 switch 语句。控制传递给终止语句后面的语句(如果有的话)。此语句的形式如下:

break;

示例

在此例中,条件语句包含一个可以从 1 计数到 100 的计数器;但 break 语句在计数达到 4 后终止循环。

 

// statements_break.cs

using System;

class BreakTest

{

   public static void Main()

   {

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

      {

         if (i == 5)

            break;

         Console.WriteLine(i);

      }

   }

}

输出

1

2

3

4

示例

此例在 switch 语句中演示了 break 的用法。

// statements_break2.cs

// break and switch

using System;

class Switch

{

   public static void Main()

   {

      Console.Write("Enter your selection (1, 2, or 3): ");

      string s = Console.ReadLine();

      int n = Int32.Parse(s);

 

      switch(n)

      {

         case 1:

            Console.WriteLine("Current value is {0}", 1);

            break;

         case 2:

            Console.WriteLine("Current value is {0}", 2);

            break;

         case 3:

            Console.WriteLine("Current value is {0}", 3);

            break;

         default:

            Console.WriteLine("Sorry, invalid selection.");

            break;

      }

   }

}

输入

1

示例输出

Enter your selection (1, 2, or 3): 1

Current value is 1

如果输入了 4,则输出为:

 

Enter your selection (1, 2, or 3): 4

Sorry, invalid selection.

 

//---------------------------------------------------------------------------

continue 将控制传递给它所在的封闭迭代语句的下一个迭代。它的形式为:

continue;

示例

在此例中,计数器初始化为从 1 到 10 计数。通过与表达式一起使用 continue 语句 (i < 9),跳过了位于 continue 与 for 体结尾之间的语句。

// statements_continue.cs

using System;

class ContinueTest

{

   public static void Main()

   {

      for (int i = 1; i <= 10; i++)

      {

         if (i < 9)

            continue;

         Console.WriteLine(i);

      }

   }

}

输出

9

10

 

//---------------------------------------------------------------------------

goto 语句将程序控制直接传递给标记语句。它的形式为下列之一:

goto identifier;

goto case constant-expression;

goto default;

其中:

identifier

一个标签。

constant-expression

一个 switch-case 标签。

备注

在第一种形式中,identifier 指示位于当前体中的标签、相同的词法范围或 goto 语句的封闭范围。

goto 的一个通常用法是将控制传递给特定的 switch-case 标签或 switch 语句中的默认标签。

goto 语句还用于跳出深嵌套循环。

如果程序中从未引用过标签,则可能发出一条警告消息。有关标签的更多信息,请参见 3.3 声明。

示例

有关使用 goto 将控制传递给特定 switch-case 标签的示例,请参见 switch 示例。

示例

下例演示了使用 goto 跳出嵌套循环。

// statements_goto.cs

// Nested search loops

using System;

public class GotoTest1
{

   public static void Main()

   {

      int x = 200, y = 4;

      int count = 0;

      string[,] myArray = new string[x,y];

 

      // Initialize the array:

      for (int i = 0; i < x; i++)

         for (int j = 0; j < y; j++)

            myArray[i,j] = (++count).ToString();

 

      // Read input:

      Console.Write("Enter the number to search for: ");

 

      // Input a string:

      string myNumber = Console.ReadLine();

 

      // Search:

      for (int i = 0; i < x; i++)

         for (int j = 0; j < y; j++)

            if (myArray[i,j].Equals(myNumber))

               goto Found;

 

      Console.WriteLine("The number {0} was not found.", myNumber);

      goto Finish;

 

   Found:

      Console.WriteLine("The number {0} is found.", myNumber);

 

   Finish:

      Console.WriteLine("End of search.");

   }

}

输入

44

示例输出

Enter the number to search for: 44

The number 44 is found.

End of search.

示例

// statements_goto2.cs

// CS0159 expected

// Labels outside the scope

using System;

class UnreachableCode

{

   public static void Main()

   {

      int x = 55;

      Console.WriteLine("x = {0}", x);

 

      if (x == 55)

      {

         x = 135;

         goto A;   // Error

      }

 

      x = x + 1;

 

      for (int i=1; i<=5; i++)

      {

         A: Console.WriteLine(i);

      }

 

      Console.WriteLine("x = {0}", x);

   }

}

在前面的示例中,goto 语句引用其范围之外的标签 A。编译器将发出错误信息:

No such label 'A' within the scope of the goto statement

由于从未引用过此标签,因此还可能发出一条警告消息。

如果将标签 A 移到 for 循环的开始处,程序将正常编译和运行,即:

A:      for (int i=1; i<=5; i++) {   // Now the program compiles.

 

//---------------------------------------------------------------------------

return 语句终止它出现在其中的方法的执行并将控制返回给调用方法。它还可以返回可选 expression 的值。如果方法为 void 类型,则可以省略 return 语句。此语句的形式如下:

return [expression];

其中:

expression

由方法返回的值。expression 不与 void 类型的方法一起使用。

示例

在下例中,A() 方法以 double 值的形式返回 Area 变量。

// statements_return.cs

using System;

class ReturnTest

{

   static double CalculateArea(int r)

   {

      double area;

      area = r*r*Math.PI;

      return area;

   }

 

   public static void Main()

   {

      int radius = 5;

      Console.WriteLine("The area is {0:0.00}", CalculateArea(radius));

   }

}

输出

The area is 78.54

本文地址:http://com.8s8s.com/it/it42642.htm