.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C#中的几种跳转语句

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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



相关文章

相关软件