小编Mel*_*viz的帖子

将'IDisposable'嵌套在一个'using'语句中

关于在单个'using'语句中使用嵌套一次性用法的快速问题:我应该写出每个一次性使用语句,还是可以将它们嵌入一个?例:

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 );
}
Run Code Online (Sandbox Code Playgroud)

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 );
}
Run Code Online (Sandbox Code Playgroud)

好奇的是,当块执行完毕时,来自"myFile.txt"的未命名的FileStream会被清除,因为它位于带有GZipStream的using语句中,或者它是否保持打开状态并且需要在此之后的某个时间进行清理.

编辑:为了清楚,我不是在询问有关使用语句嵌套的问题.我问的是,在另一个IDisposable的'using'语句中创建的IDisposable是否会在块的末尾被处理掉.任何解释为什么或为什么不会被赞赏.

c# idisposable using-statement

6
推荐指数
1
解决办法
259
查看次数

标签 统计

c# ×1

idisposable ×1

using-statement ×1