Ich verwende die using-Anweisung für SqlConnection
. Es ist gut für die Leistung, da Forces Dispose() aufrufen, die die Verbindung zu dem Pool einfach früher freigibt.Kann die using-Anweisung durch geschweifte Klammern ersetzt werden?
Allerdings habe ich festgestellt, dass in Verwendung erstellt Objekt nicht neu definiert werden kann. Ich kann so nicht tun:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
ich mich gefragt, ob ich mit ersetzen kann, und etwas tun, wie folgt aus:
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
Die SqlConnection
wird nicht nach der letzten }
Klammer zugänglich sein. Wird das Dispose() sofort aufgerufen, wenn das Objekt seinen Gültigkeitsbereich verlässt?
Danke. Wenn es um das Schließen von Verbindungen geht, würde ich natürlich connection.Close() anrufen, aber ich habe es nicht in den obigen Code geschrieben. – nan
Auch wenn Sie Close() explizit aufrufen, kann Ihr zweites Beispiel dennoch eine Verbindung offen lassen, wenn eine Ausnahme auftritt. Der Aufruf von Dispose wird nicht nur ausgeführt, wenn die Ausführung diesen Block verlässt, sondern auch, wenn eine Ausnahme auftritt. – ThatBlairGuy