【发布时间】:2014-04-14 21:37:53
【问题描述】:
我最近下载了 Visual Studio 2013,并对我正在处理的项目运行了代码分析。它引发了我正在解决的几个问题,但特别是关于我如何使用“使用”IDisposable 语句。
这是我的代码示例:
using (MemoryStream msDecrypt = new MemoryStream(encryptedText.ToBase64Byte()))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
我了解分析警告试图告诉我以这种方式处置多个对象可能会引发对象处置问题。
我确信在上述情况下对一个对象进行处理不会引发异常。那么我应该修改我的代码还是保持原样?
【问题讨论】:
-
这种做法迄今为止对我来说从未失败过,所以我认为它非常好。
-
感谢大家的反馈。我确信我对 using 语句的实现很好,但是当分析工具向我突出显示它时,我开始怀疑自己。我会将第一个答案标记为正确,但所有答案都非常有效!谢谢!
-
您也可以在一个
using语句中包含所有这些,变量类型设置为Stream,唯一的问题是您必须在块内强制转换为ReadToEnd展示。它确实删除了警告。见this question -
也就是说,忽略警告,您不必添加不必要的模糊性来避免误报代码分析警告。
-
其中一些流将被多次释放,因为
StreamReader拥有并释放关联的流。
标签: c# idisposable using