Will the following statement cause a memory leak:
Imports System.Data.SQLClient
Public Function getConnection () As SQLConnection
return New SQLConnection()
End Function
Public Sub TestConnection()
Dim con As SQLConnection
con = getConnection
con.close
con = Nothing
End Sub
How does .close or .dispose get called on the SQLConnection in getConnection?
There will be no memory leak because it will be garbage collected after you’ve called the method.
But this method does nothing but causing confusion. You should always dispose connections(which closes it implicitely) as soon as you’re finished with it (even in case of an exception).
You can do that in a finally of a
Try/Finallyor (easier) with theUsingstatement. But since both approaches need to wrap the connection, your method enables the calling method to forget it. Therefore it is bad practise.So simply do this: