Анализ кода C# CA1822, предупреждающий - почему?

Мне показали метод, ниже которого генерирует предупреждение Анализа кода CA1822. CA1822 говорит это:

"The 'this parameter (or 'Me' in Visual Basic) of 'ImportForm.ProcessFile(StreamReader)' is never used. Mark the member as static (or Shared in Visual Basic) or use 'this/Me' in the method body or at least one property accessor, if appropriate."

Кто-либо может сказать мне, почему я получаю это предупреждение, так как параметр 'читателя' на самом деле используется?

private void ProcessFile(StreamReader reader)
{
   string[] lines;

   lines = reader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

   ParseFile.IVAFile(lines);
}
33
задан Randy Minder 9 February 2010 в 14:31
поделиться

4 ответа

Это значит, что вы не используете членов объекта. Все элементы в методе исходят из параметров.

Поэтому метод можно смело сделать статическим.

47
ответ дан 27 November 2019 в 17:59
поделиться

"reader" используется, но вы нигде не используете "this", так что вы можете сделать метод статическим.

Единственная причина , по которой нельзя сделать его статическим, это если Вы захотите позже использовать полиморфизм - например, сделать его виртуальным и переопределить его в другом месте.

17
ответ дан 27 November 2019 в 17:59
поделиться

Я думаю, он пытается сказать вам, что этот метод можно сделать статическим.

Единственное, к чему нужно получить доступ этому методу - это "reader", но ничего из экземпляра класса, к которому он принадлежит ("this"). В этом случае его можно смело сделать статическим.

2
ответ дан 27 November 2019 в 17:59
поделиться

Предупреждение возникает из-за того, что в этом методе не используются никакие переменные-члены этого класса. Например.

this.m_anyVariable = anyValue;

Следовательно, вы можете / должны отметить этот метод как статический.

2
ответ дан 27 November 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: