CA2202:如何规避警告?

时间:2016-08-20 10:32:49

标签: c# visual-studio

我通过Visual Studio 2015中的代码分析来运行我的代码。它显示了一个警告,我不知道如何规避。下面的片段显示了原理。该程序产生警告CA2202:

  

“对象'memoryStream'可以在方法中多次处理......”。

private void tt()
{
    MemoryStream memoryStream = null;
    StreamWriter streamWriter = null;
    memoryStream = new MemoryStream();
    streamWriter = new StreamWriter(memoryStream, Encoding.Unicode);
    memoryStream.Close();
    streamWriter.Close();
}

1 个答案:

答案 0 :(得分:2)

根据MSDN StreamWriter.Close的方法说明是"关闭当前的StreamWriter对象和基础流。"。因此,memoryStream.Close()streamWriter.Close()会关闭基础流。这是由编译器诊断出来的,建议避免使用。另外,请确保调用streamWriter.Close(),因为此方法会刷新streamWriter中的缓冲区。

同样,using关键字(包括对.Dispose()/ .Close()的最终调用的作用域)强烈推荐用于这些类型的操作。有关典型用法,请参阅以下MSDN页面。