如何退出"使用"块

时间:2015-11-18 10:06:42

标签: .net vb.net using goto

我正在编写代码,我遇到这样的情况:

Sub Example()
    Using DT As New DataTable
        '...some code
        If mCondition = True Then GoTo Other
        '...some code
    End Using
Other:
    '...some code
End Sub

我担心" goto"在块上"使用":它是否正常工作?

我是否需要使用不同的代码结构? (或者如果我这样做会更好)

1 个答案:

答案 0 :(得分:1)

您不必担心现有的Use块,因为一旦控制流移出块,编译器就会处理资源的处理。

来自The documentation

  

"使用块的行为类似于Try ...最终构造中的   Try块使用资源而Finally块处理它们。   因此,Using块可以保证资源的处理,   无论你如何退出街区。即使在情况下也是如此   未处理的异常,除了StackOverflowException。"

所以你的代码实际上是这样的:

Sub Example()
    Dim DT As New DataTable
    Try
        '...some code
        If mCondition = True Then GoTo Other
        '...some code
    Finally
        DT.Dispose
    End Try
Other:
    '...some code
End Sub

话虽如此,首先拥有一个goto几乎总是代码味道,所以你可以用某种方式进行重构。请参阅:GoTo statements and alternatives in VB.NET