Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
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 C# e per le estensioni gestite per C++ quando accede a codice gestito. Il compilatore Visual Basic supporta i metodi con parametri predefiniti mediante la parola chiave Optional (Visual Basic).
Correzione di 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
Sostituire gli argomenti ripetitivi con una matrice di parametri