这样的构造会正确处理文件句柄吗?
void bla() {
using (var stream = new new System.IO.StreamReader( filename)) {
return DoSomethingWithTheStream(stream);
}
}
即。即使在内部返回,use也会触发Dispose吗?
答案 0 :(得分:5)
这相当于:
var stream = new StreamReader(fileName);
try {
return DoSomethingWithTheStream(stream);
}
finally {
stream.Dispose();
}
由于最终的子句可以保证执行,因此可以保证在从方法返回之前处理流。
答案 1 :(得分:4)
是。无论块如何离开,资源都被处理掉。这是using
- 块的值。
答案 2 :(得分:2)
是的,它会正确处理。
答案 3 :(得分:0)
是的,一旦流程超出范围,它就会被处理掉。