【发布时间】:2012-04-19 14:14:11
【问题描述】:
我今天写了一些代码,另一位开发人员更改了它,说它更安全。我不确定这是否正确,因为我看不到这里所做的优势是一些代码示例
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# 很陌生,当你完成它时不应该关闭它吗?
【问题讨论】:
-
并不是说在任何一种情况下,您的
ReadFile记录它是否关闭流都是有益的。例如,接受流的StreamReader的构造函数明确表示它会处理该流,因此调用者不应再次处理它。 -
@Servy:更准确的说法是调用者不需要再次处理它。
Dispose设计为幂等的,所以重复调用它应该没有效果。 -
@Douglas 知道一个方法是否处理传入的
IDisposable仍然很重要,因为调用者可能希望继续使用它。如果您将其传递给处理它的人并再次使用它,BAM! -
@Servy:是的,当然,我没有对此提出异议。我只是指出允许调用者再次处理流。
标签: c# exception-handling io