CA1026: Default parameters should not be used
|
TypeName |
DefaultParametersShouldNotBeUsed |
|
CheckId |
CA1026 |
|
Category |
Microsoft.Design |
|
Breaking Change |
Breaking |
Methods that use default parameters are allowed under the Common Language Specification (CLS); however, the CLS allows compilers to ignore the values that are assigned to these parameters. Code that is written for compilers that ignore default parameter values must explicitly provide arguments for each default parameter. To maintain the behavior that you want across programming languages, methods that use default parameters should be replaced with method overloads that provide the default parameters.
The compiler ignores the values of default parameters for Managed Extension for C++ when it accesses managed code. The Visual Basic compiler supports methods that have default parameters that use the Optional (Visual Basic) keyword.
The following example shows a method that uses default parameters, and the overloaded methods that provide an equivalent functionality.
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