c#中為什麼又重新使用了goto語句

來源:互聯網
上載者:User
對於goto語句,在c/c++中就已經被不推薦使用了,在java中根本就沒有goto的存在了,為什麼c#中又重新使用goto語句呢?

首先瞭解一下c#中的goto語句用法:
1)基本的作用還是和以前一樣,使用者跳到Label的地方執行語句。

//exp1 有效代碼
{

  {
    
     goto labelA;
    
  }
labelA:

}

2)但是在c#中,goto只允許在一個語句塊內跳出,或者在一個語句塊內的一個地方跳到另一個地方;
3)不允許goto從一個語句塊外面跳入一個語句塊內部的。//exp2.1 有效代碼
//goto在同語句塊內跳轉
{

  {
    
    goto labelA;
    
    
    labelA:
    
  }


}


//exp2.2無效代碼
//goto從語句塊外跳入語句塊內【錯誤】
{

  {
    
    goto labelA;  //錯誤,不允許跳入一個語句塊內部
    
     {
       
       labelA:
       
     }
  }


}

4)與goto對應的Label後面必須有跟隨有效語句,即不允許將Label放在一個語句塊的最後面。//exp3 無效代碼
{

  {
    
    goto labelA;
    
  }

labelA:   //Error: labelA後面應當跟隨有效語句。
}

以上是goto語句的基本用法,而goto在C#中唯一有用的地方就是和switch語句結合起來使用,在其他地方,請記住goto語句也是不被推薦使用的。
瞭解一下switch語句的文法形式:www.elivn.comswitch(expression)
{
   case 1:
        .. //(1)錯誤文法: 沒有加break語句跳出
   case 2:
        ..
        break;
   case 3:    //(2)正確文法:同樣沒有加break語句跳出
   case 4:
         .
         break;
   default:
       .
        break;
}
//對比一下以上兩處case末尾同樣沒有加break語句,
//但是一處是正確一處是錯誤的,仔細可以看出(1)處case後面跟有語句,(2)處則沒有跟任何語句。
//這樣,我們可以知道,在C#中,(1)的用法是不被允許的,而(2)的用法則是被允許的。
//也就是說,接連的兩個case,如果前面一個case語句後面沒有跟任何有效語句,則會自動跳入到下個case,
//但是如果前一個case語句後面跟有任何有效語句,則不允許直接跳入下面一個case的。
//▲這裡有需要用到goto語句來跳入下一個case了

switch(expression)
{
   case 1:
        .. 
         goto case 2; //(1)正確文法
   case 2:
        ..
        break;
   case 3:    //(2)正確文法:同樣沒有加break語句跳出
   case 4:
         .
         break;
   default:
       .
        break;
}

//實際上這裡的goto也充當了break的作用了,
//這裡說明一點,C#的switch語句是不允許case和case之間穿越的。只能藉助goto語句來實現這個功能。
//至於為什麼要定義成這樣 ,那應該就是MS的部分大師的編程習慣了。
//PS.c#是允許包含0個語句的switch部分流程式控制制繼續(穿越)執行下一個switch部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.