5
A
回答
13
因「GOTO block
」這將無法編譯,而不是「goto block;
」即使它是正確的,將不能編譯,因爲C#規格狀態(第8.9.3節):
的目標a
goto
標識符語句是帶給定標籤的帶標籤的語句。如果具有給定名稱的標籤在當前函數成員中不存在,或者goto語句不在標籤範圍內,則會發生編譯時錯誤。此規則允許使用goto語句將嵌套範圍內的控件轉移出來,但不允許將轉換爲嵌套範圍內的。
而且我發現幾個有趣的規格過我:
goto語句不能退出
finally
塊(第8.10節)。當在finally
塊內發生goto語句時,goto語句的目標必須位於相同的finally
塊中,否則會發生編譯時錯誤。
和:
goto語句的執行過程如下:
- 如果goto語句退出一個或多個try塊具有關聯finally塊,>控制最初轉移到最後試圖阻止最內層的陳述。當>並且控制到達finally塊的結束點時,控制轉移到下一個包含try語句的finally子句中。重複這個過程,直到執行了所有中間try語句的finally塊。
- 控制轉移到goto語句的目標。
後者意味着,如果你有
try
{
...
goto Label1;
}
finally
{
CloseAll();
}
Label1:
MethodB();
它實際上將控制權轉移給Label1
並執行MethodB()
之前調用CloseAll()
。
使完美的感覺,但我從來沒有想過它...
6
相關問題
- 1. C#中的goto語句慢了嗎?
- 2. Netezza GOTO語句
- 3. sql-goto語句
- 4. 即將使用goto語句
- 5. 內聯函數中的goto語句?
- 6. 替換Swift中的goto語句
- 7. Groovy中的GOTO語句如何?
- 8. C++中的goto語句在堆棧中的效果
- 9. 如何在Objective-C的switch語句中使用goto?
- 10. 在Java中替代goto語句
- 11. goto語句的替代方法
- 12. 爲什麼goto語句在C++中被視爲禁忌?
- 13. c#我該如何結束我的GOTO語句並繼續
- 14. IF語句中的GOTO批處理語法
- 15. 使用goto語句for循環
- 16. 如何正確使用goto語句
- 17. C#如何在執行goto語句後返回上一步?
- 18. 具有多個GO的腳本中的SQL GOTO語句
- 19. UPDATE語句中的語法錯誤Visual Studio C#.net
- 20. C#避免多次switch語句.NET
- 21. C語言中的try-catch語句C
- 22. 多個返回語句與多個goto語句:哪一個更好?
- 23. 的C語句
- 24. 可以定義具有goto語句和標籤的宏嗎?
- 25. 使用GOTO語句只能跳轉出現的問題?
- 26. C#中的SQL select語句
- 27. C#中的if/else語句
- 28. C#中的if else語句
- 29. C++中的switch語句
- 30. C#中的固定語句
你爲什麼要他們? – Pondidum 2009-12-23 11:44:57
'C#.NET',很好... – 2009-12-23 11:45:59
是不是編譯錯誤? – ironic 2009-12-23 11:46:36