CA2000 和 CA2202 警告最近一直是我存在的祸根。我在这里做错了什么?我基本上得到一个FileStream
usingFile.Open
然后将它传递给一个可能返回新流或可能返回相同流的函数。然后我对我的流执行更多操作,然后在我的finally
块中处理我正在使用的流,如果它不同的话。
我收到两个 CA 警告。2000 用于fileStream
块内using
,2202 用于changedStream
块内finally
。是什么赋予了?
using (Stream fileStream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
Stream changedStream = null;
try
{
changedStream = someCondition ? fileStream : DoSomeActionThatMayReturnNewStream(fileStream);
DoSomeMoreStuffWithStream(changedStream);
}
finally
{
if (changedStream != null && changedStream != fileStream)
{
changedStream.Dispose();
}
}
}