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. 在C++中使用goto語句
- 5. 方法之間的goto語句C++
- 6. 實現goto語句
- 7. goto語句和替代方法C
- 8. 即將使用goto語句
- 9. goto語句vs遞歸
- 10. C++中的goto語句在堆棧中的效果
- 11. 替換Swift中的goto語句
- 12. 錯誤VBA中的GOTO語句
- 13. 內聯函數中的goto語句?
- 14. Groovy中的GOTO語句如何?
- 15. 如何在Objective-C的switch語句中使用goto?
- 16. 如何在Android中使用goto語句
- 17. 在Java中替代goto語句
- 18. 爲什麼goto語句在C++中被視爲禁忌?
- 19. goto語句的替代方法
- 20. c#我該如何結束我的GOTO語句並繼續
- 21. IF語句中的GOTO批處理語法
- 22. 使用goto語句for循環
- 23. 使用goto語句從如果到時
- 24. 爲什麼Go有一個「goto」語句
- 25. 如何正確使用goto語句
- 26. C#如何在執行goto語句後返回上一步?
- 27. C#用一個if-else替換goto語句
- 28. 我們可以在switch語句中使用goto語句嗎?在PHP
- 29. 具有多個GO的腳本中的SQL GOTO語句
- 30. UPDATE語句中的語法錯誤Visual Studio C#.net
你爲什麼要他們? – Pondidum 2009-12-23 11:44:57
'C#.NET',很好... – 2009-12-23 11:45:59
是不是編譯錯誤? – ironic 2009-12-23 11:46:36