C#中的几种跳转语句

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
Published At
Categories with Web编程
Tagged with
comments powered by Disqus