Condividi tramite


CA1026: Evitare l'utilizzo di parametri predefiniti

TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

Category

Microsoft.Design

Breaking Change

Breaking

Causa

Un tipo visibile esternamente contiene un metodo visibile esternamente che utilizza un parametro predefinito.

Descrizione della regola

I metodi che utilizzano parametri predefiniti sono consentiti dalla specifica CLS (Common Language Specification); questa specifica, tuttavia, consente ai compilatori di ignorare i valori assegnati a questi parametri. Il codice scritto per compilatori che ignorano i valori dei parametri predefiniti deve fornire in modo esplicito gli argomenti per ogni parametro predefinito. Per mantenere il comportamento desiderato tra diversi linguaggi di programmazione, è necessario sostituire i metodi che utilizzano parametri predefiniti con overload di metodi che forniscono i parametri predefiniti.

Il compilatore ignora i valori dei parametri predefiniti per l'Estensione gestita per C++ quando accede al codice gestito. Il compilatore Visual Basic supporta metodi che dispongono di parametri predefiniti che utilizzano la parola chiave Optional (Visual Basic).

Come correggere le violazioni

Per correggere una violazione di questa regola, sostituire il metodo che utilizza parametri predefiniti con overload di metodi che forniscono parametri predefiniti.

Esclusione di avvisi

Non escludere un avviso da questa regola.

Esempio

Nell'esempio riportato di seguito viene illustrato un metodo che utilizza parametri predefiniti e i metodi di overload che forniscono una funzionalità 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

Regole correlate

Ca1025: Sostituire gli argomenti ripetitivi con una matrice di parametri

Vedere anche

Concetti

Common Language Specification