CA1026: Os parâmetros padrão não devem ser usados.

TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Quebrando

Causa

Um tipo visível externamente contém um método visível externamente que usa um parâmetro padrão.

Descrição da regra

Os métodos que usam parâmetros padrão são permitidos na especificação de CLS (Common Language); Entretanto, o CLS permite compiladores ignorar os valores que são atribuídos a esses parâmetros. Código foi escrito para compiladores ignoram os valores de parâmetro padrão explicitamente deve fornecer argumentos para cada parâmetro padrão. Para manter o comportamento desejado, através de linguagens de programação, os métodos que usam parâmetros padrão devem ser substituídos com sobrecargas de método para fornecem os parâmetros padrão.

O compilador ignora os valores dos parâmetros padrão para extensão gerenciadas para C++ quando ele acessa o código gerenciado. O compilador de Visual Basic oferece suporte a métodos que possuem parâmetros padrão que usam o Opcional (Visual Basic) palavra-chave.

Como corrigir violações

Para corrigir uma violação desta regra, substitua o método que usa parâmetros padrão com sobrecargas de método para fornecem os parâmetros padrão.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra um método que usa parâmetros padrão e os métodos sobrecarregados que fornecem uma funcionalidade 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

Regras relacionadas

CA1025: Substitua a matriz params de argumentos repetitivos

Consulte também

Conceitos

CLS (Common Language Specification)