gpt4 book ai didi

c# - 在函数中关闭一个流,一个坏主意?

转载 作者:太空狗 更新时间:2023-10-29 19:50:47 25 4
gpt4 key购买 nike

我今天写了一些代码,被另一个开发者改了,他说这样更安全。我不确定这是对的,因为我看不到这里所做的有一些代码示例的优势

public byte[] ReadFile(Stream stream)
{
byte[] result = null;

try
{
// do something with stream
result = <result of operation>
}
finally
{
stream.Close();
}

return result;
}

这被改成了

public byte[] ReadFile(Stream stream)
{
byte[] result = null;

// do something with stream
result = <result of operation>

return result;
}

我是 c# 的新手,当你完成它时应该不关闭流吗?

最佳答案

一般来说,第一个版本是一个糟糕的设计。

是的,应该关闭 Stream,但最好使用打开它的相同代码(相同方法)。这就是所谓的关注点分离,它使错误和困惑的可能性大大降低。

所以要么

  • 您的 ReadFile() 接受例如 string fileName 并打开和关闭流,或者
  • 你把它留给来电者。

您的方法(第二版)应该以这种方式使用:

using (var reader = new FileReader(...))
{
// maybe some pre-reading
var r = ReadFile(reader);
// maybe some post-reading
}

请注意,第二种方法也使该方法更具可重用性。

关于c# - 在函数中关闭一个流,一个坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035381/

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