我有下面显示的方法生成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);
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 18
正在使用"reader",但你并没有在任何地方使用"this",所以你可以使方法保持静态.
不使它成为静态的唯一原因是如果你想稍后使用多态 - 例如将其设置为虚拟并在其他地方覆盖它.
也许我发现了此消息的恶意行为。
在类似的情况下
void Print()
{
Console.Writeline(GetType().Name);
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个CA1822报告,尽管GetType()它是一个实例方法。但是,我发现了一些解释,为什么GetType()实际上不是虚拟方法,不是替代方法,并且在技术上表现得像静态方法。
只是代码分析并没有考虑这种特殊行为。