La maggior parte degli esempi di istruzione using in C# dichiarano l'oggetto all'interno delle parentesi in questo modo:Può un oggetto essere dichiarato sopra un'istruzione using anziché nelle parentesi
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", connection))
{
// Code goes here
}
Cosa succede se uso il tramite dichiarazione nel modo seguente con l'oggetto dichiarato fuori l'istruzione using:
SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", connection);
using (cmd)
{
// Code goes here
}
e 'una cattiva idea di utilizzare l'istruzione using nel modo che ho in secondo esempio e perché?
E sarà ancora disponibile dopo il 'using'. – Anax
Sarà disponibile ma non utilizzabile - lo stato interno sarà stato eliminato. Non hai idea di cosa sia lo stato interno o di come dispose l'istanza della classe, quindi non è un corso sicuro. Non ho detto che non sarebbe disponibile, il -1 non è applicabile. –
Credo che anche se il costruttore viene eseguito all'interno del blocco using, Dispose non verrà chiamato se il costruttore getta. – Henrik