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