У меня есть метод, показанный ниже, который генерирует предупреждение анализа кода CA1822. CA1822 говорит, что это:C# Code Analysis 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);
}
Почему * должен * метод быть помечен как статический? В чем польза? –
Ahh, из-за производительности. Из MSDN: «После того, как вы помечаете методы как статические, компилятор будет выставлять неиртуальные сайты вызовов этим членам. Испускание не виртуальных сайтов вызовов предотвратит проверку во время выполнения для каждого вызова, который гарантирует, что текущий указатель объекта не равен нулю. может достичь измеримого прироста производительности для кода, чувствительного к производительности. В некоторых случаях отказ в доступе к экземпляру текущего объекта представляет собой проблему корректности ». –