CA1822: помечайте члены как статические

Свойство Значение
Идентификатор правила CA1822
Заголовок Пометьте члены как статические
Категория Производительность
Исправление является критическим или не критическим Не критическое — если элемент не виден извне сборки, независимо от внесенных изменений.

Не критическое — если вы просто изменяете элемент на элемент экземпляра с ключевым словом this.

Критическое — при превращении элемента из элемента экземпляра в статический элемент, который является видимым за пределами сборки.
Включен по умолчанию в .NET 8 Как предложение

Причина

Элемент, не обращающийся к данным экземпляра, не помечается как статический (общий в Visual Basic).

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

Элементы, не обращающиеся к данным экземпляра и не вызывающие методы экземпляра, можно помечать как статические (общие в Visual Basic). Если пометить методы как статические, компилятор предоставит этим членам невиртуальные места вызова. Выдача невиртуальных сайтов вызовов предотвращает проверку во время выполнения каждого вызова, которая гарантирует, что текущий указатель объекта не имеет значение null. Это может обеспечить значительное повышение производительности при работе с кодом, для которого важна высокая производительность системы. В некоторых случаях сбой доступа к текущему экземпляру объекта означает проблему с корректностью.

Устранение нарушений

Пометьте элемент как статический (или общий в Visual Basic) или используйте "this"/"Me" в теле метода, если это уместно.

Когда лучше отключить предупреждения

Предупреждения от этого правила можно скрыть для ранее отправленного кода, для которого исправление будет критическим изменением.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1822
// The code that's violating the rule is on this line.
#pragma warning restore CA1822

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1822.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Настройка кода для анализа

Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.

Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (производительности), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Включение определенных контактных зон API

Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:

dotnet_code_quality.CAXXXX.api_surface = private, internal