Share via


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

CA1025: Reemplazar argumentos repetitivos por una matriz de parámetros

Consulte también

Independencia del lenguaje y componentes independientes del lenguaje