CA1026: No deben usarse parámetros predeterminados
Elemento | Valor |
---|---|
RuleId | CA1026 |
Category | Microsoft.Design |
Cambio importante | Problemático |
Causa
Un tipo visible externamente contiene un método visible externamente que usa un parámetro predeterminado.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Los métodos que usan parámetros predeterminados están permitidos en Common Language Specification (CLS); pero CLS permite a los compiladores omitir los valores asignados a estos parámetros. El código que se escribe para los compiladores que omiten los valores de parámetro predeterminados debe proporcionar argumentos de forma explícita para cada parámetro predeterminado. Para seguir utilizando el comportamiento que quiere en los lenguajes de programación, los métodos que utilizan parámetros predeterminados deberían reemplazarse por sobrecargas de métodos que proporcionen los parámetros predeterminados.
El compilador omite los valores de los parámetros predeterminados para la extensión administrada de C++ cuando accede al código administrado. El compilador de Visual Basic admite métodos que tienen parámetros predeterminados que usan la palabra clave Opcional.
Cómo corregir infracciones
Para corregir una infracción de esta regla, reemplace el método que usa parámetros predeterminados por sobrecargas de métodos que proporcionen los parámetros predeterminados.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestra un método que usa parámetros predeterminados y los métodos sobrecargados que proporcionan una función 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
CA1025: Reemplazar argumentos repetitivos por una matriz de parámetros
Consulte también
Independencia del lenguaje y componentes independientes del lenguaje
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de