我今天写了一些代码,另一位开发人员说它更安全.我不确定这是否正确,因为我无法看到这里所做的一些代码示例的优势
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
try
{
// do something with stream
result = <result of operation>
}
finally
{
stream.Close();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这被改为
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
// do something with stream
result = <result of operation>
return result;
}
Run Code Online (Sandbox Code Playgroud)
如果你完成它后流不被关闭,我对c#很新吗?
Hen*_*man 11
一般来说,第一个版本是一个糟糕的设计.
是的,Stream应该关闭,但最好是通过打开它的相同代码(相同的方法).这被称为关注点的分离,它使错误和混淆的可能性大大降低.
所以要么
ReadFile()接受例如a string fileName和打开并关闭流,或您的方法(第2版)应该以这种方式使用:
using (var reader = new FileReader(...))
{
// maybe some pre-reading
var r = ReadFile(reader);
// maybe some post-reading
}
Run Code Online (Sandbox Code Playgroud)
请注意,第二种方法也使该方法更具可重用性.
这个问题没有正确答案,因为这取决于您的应用程序架构.
我会说,是的,因为如果在这个函数stream中没有创建,但只使用了,所以关闭它让我们放弃调用者.
但我再说一遍,这取决于您的应用程序架构.
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |