CA2202: как обойти предупреждение?

c# visual-studio

65 просмотра

1 ответ

Я выполнил анализ кода в Visual Studio 2015. Он показывает предупреждение, что я не знаю, как его обойти. Ниже приведен фрагмент кода. Эта программа выдает предупреждение CA2202:

Msgstr "Объект 'memoryStream' может быть размещен более одного раза в методе ...".

private void tt()
{
    MemoryStream memoryStream = null;
    StreamWriter streamWriter = null;
    memoryStream = new MemoryStream();
    streamWriter = new StreamWriter(memoryStream, Encoding.Unicode);
    memoryStream.Close();
    streamWriter.Close();
}
Автор: Johannes Schacht Источник Размещён: 08.11.2019 11:11

Ответы (1)


2 плюса

Решение

Описание метода StreamWriter.Closeсогласно MSDN : «Закрывает текущий объект StreamWriter и нижележащий поток». Поэтому memoryStream.Close()и streamWriter.Close()закройте основной поток. Это было диагностировано компилятором и рекомендовано избегать. Также убедитесь, что вы вызываете, streamWriter.Close()так как этот метод очищает буферы в streamWriter.

Кроме того, usingдля таких операций настоятельно рекомендуется ключевое слово (scoping, включающее последний вызов .Dispose () / .Close ()). Пожалуйста, обратитесь к следующей странице MSDN о типичном использовании.

Автор: Thomas Размещён: 20.08.2016 10:49
Вопросы из категории :
32x32