CA1026:不应使用默认参数

类型名

DefaultParametersShouldNotBeUsed

CheckId

CA1026

类别

Microsoft.Design

是否重大更改

原因

外部可见类型包含使用默认参数的外部可见方法。

规则说明

在公共语言规范 (CLS) 中允许方法使用默认参数;但是 CLS 允许编译器忽略为这些参数分配的值。 为忽略默认参数值的编译器编写的代码必须为每个默认参数显式提供变量。 为了跨编程语言维护所需的行为,必须使用提供默认参数的方法重载来替换使用默认参数的方法。

对于 C++,编译器在访问托管代码时忽略托管扩展的默认参数值。 Visual Basic 编译器支持具有使用默认参数且这些参数使用 Optional (Visual Basic) 关键字的方法。

如何解决冲突

要修复与该规则的冲突,请使用提供默认参数的方法重载来替换使用默认参数的方法。

何时禁止显示警告

不要禁止显示此规则发出的警告。

示例

下面的示例演示一个使用默认参数的方法,以及提供等效功能的重载方法。

Imports System

<Assembly: CLSCompliant(True)>
Namespace DesignLibrary

    Public Class DefaultVersusOverloaded

        Sub DefaultParameters(Optional parameter1 As Integer = 1, _
                              Optional parameter2 As Integer = 5)
            ' ...
            Console.WriteLine("{0} : {1}", parameter1, parameter2)
        End Sub

        Sub OverloadedMethod()
            OverloadedMethod(1, 5)
        End Sub

        Sub OverloadedMethod(parameter1 As Integer)
            OverloadedMethod(parameter1, 5)
        End Sub

        Sub OverloadedMethod(parameter1 As Integer, parameter2 As Integer)
            ' ...
            Console.WriteLine("{0} : {1}", parameter1, parameter2)
        End Sub

    End Class

End Namespace

相关规则

CA1025:用形参数组替换重复的实参

请参见

概念

公共语言规范