【发布时间】:2014-07-11 14:00:18
【问题描述】:
为什么嵌套的 using 块会多次处理一个对象?
参考CA2202:
在以下示例中,在外部创建的 Stream 对象 using 语句在内部 using 语句的末尾释放 包含流的 StreamWriter 对象的 Dispose 方法 目的。在外部 using 语句的末尾,流对象是 第二次发布。第二个版本违反了CA2202。
using (Stream stream = new FileStream("file.txt", FileMode.OpenOrCreate))
{
using (StreamWriter writer = new StreamWriter(stream))
{
// Use the writer object...
}
}
我知道在大多数情况下我可以使用
using ()
using ()
{ }
当我不能恢复到try finally 时,我很高兴,就像它所暗示的那样,我只想知道为什么它可以正常工作。
这只是解释生成代码的最佳方式吗,“好吧,因为 using 块正在关闭,让我处理所有对象。”还是有理由让它以这种方式工作?
【问题讨论】: