Share via


Mark Members As Static

TypeName

MarkMembersAsStatic

CheckId

CA1822

Category

Microsoft.Performance

Breaking Change

Breaking,NonBreaking

Cause

A method that does not access instance data is not marked as static (Shared in Visual Basic).

Rule Description

Methods that do not access instance data or call instance methods can be marked as static (Shared in Visual Basic). After you mark the methods as static, the compiler will emit non-virtual call sites to these members. Emitting non-virtual call sites will prevent a check at runtime for each call that ensures that the current object pointer is non-null. This can result in a measurable performance gain for performance-sensitive code. In some cases, the failure to access the current object instance represents a correctness issue.

How to Fix Violations

Mark the member as static (or Shared in Visual Basic) or use 'this'/'Me' in the method body, if appropriate.

When to Exclude Warnings

It is safe to exclude a warning from this rule for previously shipped code for which the fix would be a breaking change.

Avoid uncalled private code

Avoid uninstantiated internal classes

Remove unused locals