No debería utilizar parámetros predeterminados
Actualización: noviembre 2007
Nombre de tipo |
DefaultParametersShouldNotBeUsed |
Identificador de comprobación |
CA1026 |
Categoría |
Microsoft.Design |
Cambio problemático |
Sí |
Motivo
Un tipo visible externamente contiene un método visible externamente que utiliza un parámetro predeterminado.
Descripción de la regla
Los métodos que utilizan parámetros predeterminados están permitidos en Common Language Specification (CLS); sin embargo, la CLS permite que los compiladores omitan los valores asignados a estos parámetros. El código escrito para que los compiladores omitan los valores de parámetro predeterminado debe proporcionar explícitamente los argumentos para cada parámetro predeterminado. Para seguir utilizando el comportamiento que desea en los lenguajes de programación, los métodos que utilizan parámetros predeterminados deberían reemplazarse con sobrecargas de métodos que proporcionen los parámetros predeterminados.
El compilador omite los valores de los parámetros predeterminados de C# y Extensión administrada para C++ al obtener acceso al código administrado. El compilador de Visual Basic admite métodos con parámetros predeterminados que utilizan la palabra clave Optional (Visual Basic).
Cómo corregir infracciones
Para corregir una infracción de esta regla, reemplace el método que utiliza los parámetros predeterminados con sobrecargas de método que proporcionan los parámetros predeterminados.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El ejemplo siguiente muestra un método que utiliza los parámetros predeterminados y los métodos sobrecargados que proporcionan una funcionalidad equivalente.
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
Reglas relacionadas
Reemplaza argumentos repetitivos con una matriz de parámetros