CA2000 と CA2202 の警告は、最近私の存在の悩みの種でした。ここで何が間違っていますか?私は基本的にFileStream
usingFile.Open
を取得し、新しいストリームを返すか、同じストリームを返す関数に渡します。次に、ストリームでさらにいくつかのアクションを実行し、finally
使用していたストリームが異なる場合はブロックで破棄します。
2 つの 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();
}
}
}