在C#中,如果我想确定性地清理非托管资源,可以使用"using"关键字。但对于多个相关对象,这会导致进一步嵌套:
在C#中,如果我想确定性地清理非托管资源,可以使用“using”关键字。但是,对于多个相互依赖的对象,这将导致越来越深的嵌套。
using (FileStream fs = new FileStream("c:\file.txt", FileMode.Open))
{
using (BufferedStream bs = new BufferedStream(fs))
{
using (StreamReader sr = new StreamReader(bs))
{
// use sr, and have everything cleaned up when done.
}
}
}
在 C++ 中,我习惯使用析构函数来像这样做:
{
FileStream fs("c:\file.txt", FileMode.Open);
BufferedStream bs(fs);
StreamReader sr(bs);
// use sr, and have everything cleaned up when done.
}
在C#中有更好的方法来处理这个问题吗?还是我只能继续多层嵌套?
if
语句会逐个缩进,但上述多个单行using
语句则不会。 - Ryan Lundy