CA1822:将成员标记为 static
类型名 |
MarkMembersAsStatic |
CheckId |
CA1822 |
类别 |
Microsoft.Performance |
是否重大更改 |
无间断 - 如果无论您做出什么更改,成员在程序集外部不可见。 无间断 - 如果您只是使用 this 关键词将该成员更改为实例成员。 间断 - 如果您将该成员从实例成员更改为静态成员,并且它在程序集外部可见。 |
原因
不访问实例数据的成员不标记为 static(在 Visual Basic 中为 Shared)。
规则说明
可以将不访问实例数据或不调用实例方法的成员标记为 static(在 Visual Basic 中为 Shared)。 在将这些方法标记为 static 之后,编译器将向这些成员发出非虚拟调用站点。 发出非虚拟调用站点将禁止在运行时对每个调用进行检查,从而确保当前的对象指针为非空。 这会使性能敏感的代码的性能得到显著提高。 在某些情况下,如果无法访问当前的对象实例,则表示存在正确性问题。
如何解决冲突
将该成员标记为 static(在 Visual Basic 中为 Shared),或者根据需要在方法体中使用“this”/“Me”。
何时禁止显示警告
对于以前发布的代码,如果所做修复属于重大更改,则可以安全地禁止显示此规则发出的警告。