C#中的幾種跳躍陳述式詳解

來源:互聯網
上載者:User
使用跳躍陳述式執行分支,該語句導致立即傳遞程式控制。跳躍陳述式中使用下列關鍵字:


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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.