0

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

2 つの CA 警告が表示されます。ブロック内では2000 fileStream、ブロック内usingでは 2202 です。何を与える?changedStreamfinally

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();
        }
    }
}
4

2 に答える 2