Aninhando 'IDisposable's em uma única instrução' using '
Pergunta rápida sobre o uso de descartáveis aninhados em uma única instrução 'using': Devo escrever cada instrução de uso de descartáveis ou posso aninhar em uma? Exemplo:
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 );
}
Apenas curioso se, quando o bloco terminar de ser executado, o FileStream sem nome de "myFile.txt" será limpo porque está na instrução using com o GZipStream ou se ele permanecer aberto e precisar ser limpo algum tempo depois disso.
Edit: Só para esclarecer, não estou perguntando sobre aninhamento usando instruções. Estou perguntando se um IDisposable que é criado dentro da instrução 'using' de outro IDisposable será descartado no final do bloco. Qualquer explicação sobre por que ou por que não seria apreciada.