gpt4 book ai didi

c# - 是否有比嵌套 "using"更好的确定性处置模式?

转载 作者:IT老高 更新时间:2023-10-28 21:49:22 26 4
gpt4 key购买 nike

在 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# 中有没有更好的方法来做到这一点?还是我被多层嵌套困住了?

最佳答案

您不必嵌套多个使用:

using (FileStream fs = new FileStream("c:\file.txt", FileMode.Open))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
// all three get disposed when you're done
}

关于c# - 是否有比嵌套 "using"更好的确定性处置模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com