CA1822:将成员标记为 static

类型名

MarkMembersAsStatic

CheckId

CA1822

类别

Microsoft.Performance

是否重大更改

无间断 - 如果无论您做出什么更改,成员在程序集外部不可见。 无间断 - 如果您只是使用 this 关键词将该成员更改为实例成员。

间断 - 如果您将该成员从实例成员更改为静态成员,并且它在程序集外部可见。

原因

不访问实例数据的成员不标记为 static(在 Visual Basic 中为 Shared)。

规则说明

可以将不访问实例数据或不调用实例方法的成员标记为 static(在 Visual Basic 中为 Shared)。 在将这些方法标记为 static 之后,编译器将向这些成员发出非虚拟调用站点。 发出非虚拟调用站点将禁止在运行时对每个调用进行检查,从而确保当前的对象指针为非空。 这会使性能敏感的代码的性能得到显著提高。 在某些情况下,如果无法访问当前的对象实例,则表示存在正确性问题。

如何解决冲突

将该成员标记为 static(在 Visual Basic 中为 Shared),或者根据需要在方法体中使用“this”/“Me”。

何时禁止显示警告

对于以前发布的代码,如果所做修复属于重大更改,则可以安全地禁止显示此规则发出的警告。

相关规则

CA1811:避免使用未调用的私有代码

CA1812:避免未实例化的内部类

CA1804:移除未使用的局部变量