CA1822. Пометьте члены как статическиеCA1822: Mark members as static

ЗначениеValue
Идентификатор правилаRule ID CA1822CA1822
КатегорияCategory ПроизводительностьPerformance
Исправление не критическое или не критическоеFix is breaking or non-breaking Не критическое — если элемент не виден за пределами сборки, независимо от внесенных изменений.Non-breaking - If the member is not visible outside the assembly, regardless of the change you make.

Не критическое — если вы просто изменяете член на член экземпляра с this ключевым словом.Non-breaking - If you just change the member to an instance member with the this keyword.

Критическое — при изменении члена члена экземпляра на статический член, который является видимым за пределами сборки.Breaking - If you change the member from an instance member to a static member and it is visible outside the assembly.

ПричинаCause

Элемент, не обращающийся к данным экземпляра, не помечен как статический (общий в Visual Basic).A member that does not access instance data is not marked as static (Shared in Visual Basic).

Описание правилаRule description

Члены, которые не обращаются к данным экземпляра или вызывают методы экземпляра, могут быть помечены как статические (Shared в Visual Basic).Members 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 nonvirtual call sites to these members. Выдача невиртуальных сайтов вызовов не позволит проверить во время выполнения каждого вызова, который гарантирует, что текущий указатель объекта не имеет значение null.Emitting nonvirtual call sites will prevent a check at run time for each call that makes sure that the current object pointer is non-null. Это может достичь измеряемого выигрыша в производительности для кода, чувствительного к производительности.This can achieve 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

Пометьте член как статический (или совместно используемый в Visual Basic) или используйте "this"/"Me" в теле метода, если это уместно.Mark the member as static (or Shared in Visual Basic) or use 'this'/'Me' in the method body, if appropriate.

Когда следует подавлять предупрежденияWhen to suppress warnings

Можно отключить вывод предупреждения из этого правила для ранее отгруженного кода, для которого исправление будет критическим изменением.It is safe to suppress a warning from this rule for previously shipped code for which the fix would be a breaking change.

Настройка анализируемого кодаConfigure code to analyze

Используйте следующий параметр, чтобы настроить, на какие части базы кода следует запускать это правило.Use the following option to configure which parts of your codebase to run this rule on.

Этот параметр можно настроить только для этого правила, для всех правил или для всех правил в этой категории (производительность).You can configure this option for just this rule, for all rules, or for all rules in this category (Performance). Дополнительные сведения см. в разделе Параметры конфигурации правила качества кода.For more information, see Code quality rule configuration options.

Включить определенные поверхности APIInclude specific API surfaces

Вы можете настроить, на какие части базы кода следует запускать это правило, в зависимости от их доступности.You can configure which parts of your codebase to run this rule on, based on their accessibility. Например, чтобы указать, что правило должно выполняться только для поверхности API, не являющейся общедоступной, добавьте следующую пару "ключ-значение" в файл . editorconfig в проекте:For example, to specify that the rule should run only against the non-public API surface, add the following key-value pair to an .editorconfig file in your project:

dotnet_code_quality.CAXXXX.api_surface = private, internal