Поделиться через


CA1801: проверьте неиспользуемые параметры

TypeName

ReviewUnusedParameters

CheckId

CA1801

Категория

Microsoft.Usage

Критическое изменение

Не критическое, если член не виден снаружи сборки вне зависимости от внесенных изменений.

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

Критическое, если параметр будет удален и он виден вне сборки.

Причина

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

  • Методы, на которые ссылаются делегаты.

  • Методы, используемые как обработчики событий.

  • Методы, объявленные с модификатором abstract (MustOverride в Visual Basic).

  • Методы, объявленные с модификатором virtual (Overridable в Visual Basic).

  • Методы, объявленные с модификатором override (Overrides в Visual Basic).

  • Методы, объявленные с модификатором extern (оператор Declare в Visual Basic).

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

Проверьте параметры в невиртуальных методах, которые не используются в основной части метода, чтобы убедиться, что код не содержит ошибок.Из-за неиспользуемых параметров усложняется обслуживание и снижается производительность.

Иногда из-за нарушения этого правила в методе может возникнуть ошибка реализации.Например, параметр должен был быть использован в основной части метода.Отключайте предупреждения этого правила, если параметр необходим в целях обратной совместимости.

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

Чтобы устранить нарушение этого правила, удалите неиспользуемый параметр (критическое изменение) или используйте параметр в основной части метода (некритическое изменение).

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

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

Пример

В следующем примере показаны два метода.Один метод нарушает правило, а второй метод соответствует правилу.

using System;
using System.Globalization;

namespace Samples
{
    public static class TestClass
    {
        // This method violates the rule.
        public static string GetSomething(int first, int second)
        {
            return first.ToString(CultureInfo.InvariantCulture);
        }

        // This method satisfies the rule.
        public static string GetSomethingElse(int first)
        {
            return first.ToString(CultureInfo.InvariantCulture);
        }
    }
}

Связанные правила

CA1811: не используйте невызываемый закрытый код

CA1812: не создавайте внутренние классы без экземпляров

CA1804: удалите неиспользуемые локальные переменные