Domanda rapida sull'utilizzo di dispositivi usa e getta nidificati in una singola istruzione "using": Devo scrivere ogni istruzione usa e getta di un disposable o posso inserirli in uno solo? Esempio:Nesting 'IDisposable's in a single' using 'statement
using(FileStream inFile = new FileStream("myFile.txt", FileMode.Open))
using(GZipStream gzip = new GZipStream(inFile, CompressionMode.Decompress))
using(FileStream outFile = new FileStream("myNewFile.txt", FileMode.CreateNew))
{
gzip.CopyTo(outstream);
}
vs.
using(GZipStream gzip = new GZipStream(new FileStream("myFile.txt", FileMode.Open), CompressionMode.Decompress))
using(FileStream outFile = new FileStream("myNewFile.txt", FileMode.CreateNew))
{
gzip.CopyTo(outstream);
}
Solo curioso se quando il blocco è fatto di esecuzione, il FileStream senza nome da "myFile.txt" viene ripulito perché è nel usando dichiarazione con la GZipStream o se rimane aperto e deve essere ripulito qualche volta dopo.
Modifica: Giusto per essere chiari, non sto chiedendo di annidare usando le istruzioni. Sto chiedendo se un IDisposable creato all'interno dell'istruzione 'using' di un altro IDisposable sarà eliminato alla fine del blocco. Qualsiasi spiegazione sul perché o perché no sarebbe apprezzata.
Possibile duplicato di [Nested using statements in C#] (http://stackoverflow.com/questions/1329739/nested-using-statements-in-c-sharp) – Joshua
Se il costruttore FileStream ha esito positivo ma il costruttore GZipStream non riesce , bene, oops. –
Forse vale la pena creare un insieme molto semplice di classi fittizie che implementano IDisposable e guarda cosa succede nel debugger? – DanS