0

在 Microsoft.NET (VB) 中编写函数以避免内存泄漏的最佳方法是什么。我一直遵循这种风格:

Public Sub TestMemoryLeak()
        Dim testCon As SqlConnection
        Try
            testCon = New SqlConnection
        Catch

        Finally
            If testCon.State = ConnectionState.Open Then
                testCon.Close()
            End If
            testCon = Nothing
        End Try
    End Sub

这里连接引用在 TRY 子句之前创建,并在 TRY 子句之后初始化。我相信即使抛出异常,连接也总是关闭和取消引用。这是好习惯吗?我在 TRY 子句中看到很多创建引用和取消引用的代码,但这意味着如果抛出异常,则无法正确处理内存。一些开发人员说他们不喜欢在 finally 子句中进行清理。我不完全明白为什么。

4

1 回答 1

6

您应该只使用以下Using语句:

Using testConn As New SqlConnection(...)
    ...
End Using

这将编译为Finally在所有情况下都会处理的。

于 2012-05-08T21:04:44.367 回答