更新:2007 年 11 月
| TypeName | DefaultParametersShouldNotBeUsed | 
| CheckId | CA1026 | 
| 类别 | Microsoft.Design | 
| 是否重大更改 | 是 | 
原因
外部可见类型包含使用默认参数的外部可见方法。
规则说明
在公共语言规范 (CLS) 中允许方法使用默认参数;但是 CLS 允许编译器忽略为这些参数分配的值。为忽略默认参数值的编译器编写的代码必须为每个默认参数显式提供变量。为了跨编程语言维护所需的行为,必须使用提供默认参数的方法重载来替换使用默认参数的方法。
对于 C#,编译器忽略默认参数的值;对于 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