Compartilhar via


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

TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

Categoria

Microsoft.Design

Alteração Significativa

Quebra

Causa

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

Descrição da Regra

Métodos que usam parâmetros padrão são permitidos sob a Especificação de Linguagem Comum (CLS); no entanto, o CLS permite que os compiladores ignorem os valores que são atribuídos a esses parâmetros.O código que é escrito para compiladores que ignorem valores de parâmetro padrão devem fornecer explicitamente argumentos para cada parâmetro padrão.Para manter o comportamento que você deseja através das linguagens de programação, os métodos que usam parâmetros padrão devem ser substituídos por sobrecargas do método que fornecem os parâmetros padrão.

O compilador ignora os valores dos parâmetros padrão para Extensão Gerenciada para C++ quando acessa código gerenciado.O compilador do Visual Basic suporta métodos que têm parâmetros padrão que usam a palavra-chave Opcional (Visual Basic) .

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta 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: substituir argumentos repetitivos por matriz de parâmetros

Consulte também

Conceitos

Independência da linguagem e componentes independentes da linguagem