CA1801:检查未使用的参数

类型名

ReviewUnusedParameters

CheckId

CA1801

类别

Microsoft.Usage

是否重大更改

否 - 如果无论您做出什么更改,成员在程序集外部不可见。

否 - 如果您更改成员以在其成员体内使用参数。

是 - 如果您移除参数,并且此参数在程序集外可见。

原因

方法签名包含一个没有在方法体中使用的参数。 此规则不检查下面的方法:

  • 由委托引用的方法。

  • 用作事件处理程序的方法。

  • 用 abstract(在 Visual Basic 中为 MustOverride)修饰符声明的方法。

  • 用 virtual(在 Visual Basic 中为 Overridable)修饰符声明的方法。

  • 用 override(在 Visual Basic 中为 Overrides)修饰符声明的方法。

  • 用 extern(在 Visual Basic 中为 Declare 语句)修饰符声明的方法。

规则说明

检查非虚方法中没有在方法体中使用的参数,以确保不存在应该访问这些参数的情况。 未使用的参数会产生维护和性能开销。

有时,与该规则冲突可能说明方法中存在实现 Bug。 例如,应在方法体中使用相应参数。 如果为了保持向后兼容性,该参数必须存在,则可以禁止显示与该规则有关的警告。

如何解决冲突

要修复与该规则的冲突,请移除未使用的参数(重大更改)或在方法体中使用该参数(非重大更改)。

何时禁止显示警告

对于以前发布的代码,如果所做修复属于重大更改,则可以安全地禁止显示此规则发出的警告。

示例

下面的示例演示了两个方法。 其中的一个方法与规则冲突,另一个方法符合规则。

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:移除未使用的局部变量