我正在编写代码,我遇到这样的情况:
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"在块上"使用":它是否正常工作?
我是否需要使用不同的代码结构? (或者如果我这样做会更好)
答案 0 :(得分:1)
您不必担心现有的Use块,因为一旦控制流移出块,编译器就会处理资源的处理。
"使用块的行为类似于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