Мне показали метод, ниже которого генерирует предупреждение Анализа кода 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);
}
Это значит, что вы не используете членов объекта. Все элементы в методе исходят из параметров.
Поэтому метод можно смело сделать статическим.
"reader" используется, но вы нигде не используете "this", так что вы можете сделать метод статическим.
Единственная причина , по которой нельзя сделать его статическим, это если Вы захотите позже использовать полиморфизм - например, сделать его виртуальным и переопределить его в другом месте.
Я думаю, он пытается сказать вам, что этот метод можно сделать статическим.
Единственное, к чему нужно получить доступ этому методу - это "reader", но ничего из экземпляра класса, к которому он принадлежит ("this"). В этом случае его можно смело сделать статическим.
Предупреждение возникает из-за того, что в этом методе не используются никакие переменные-члены этого класса. Например.
this.m_anyVariable = anyValue;
Следовательно, вы можете / должны отметить этот метод как статический.