Les paramètres par défaut ne doivent pas être utilisés
Mise à jour : novembre 2007
TypeName |
DefaultParametersShouldNotBeUsed |
CheckId |
CA1026 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Oui |
Cause
Un type extérieurement visible contient une méthode extérieurement visible qui utilise un paramètre par défaut.
Description de la règle
Les méthodes qui utilisent des paramètres par défaut sont autorisées dans le cadre de la spécification de langage commun CLS (Common Language Specification) ; toutefois, cette spécification permet aux compilateurs d'ignorer les valeurs assignées à ces paramètres. Un code écrit pour des compilateurs qui ignorent les valeurs des paramètres par défaut doit fournir explicitement des arguments pour chaque paramètre par défaut. Pour préserver le comportement souhaité d'un langage de programmation à l'autre, les méthodes qui utilisent des paramètres par défaut doivent être remplacées par des surcharges de méthode qui fournissent les paramètres par défaut.
Le compilateur ignore les valeurs des paramètres par défaut pour C# et de l'extension managée pour C++ lors de l'accès à un code managé. Le compilateur Visual Basic prend en charge des méthodes dotées de paramètres par défaut à l'aide du mot clé Optional (Visual Basic).
Comment corriger les violations
Pour corriger une violation de cette règle, remplacez la méthode qui utilise des paramètres par défaut par des surcharges de méthode qui fournissent les paramètres par défaut.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
L'exemple suivant présente une méthode qui utilise des paramètres par défaut, ainsi que les méthodes surchargées qui offrent une fonctionnalité équivalente.
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
Règles connexes
Remplacer les arguments répétitifs par un tableau params