CA1026 : Les paramètres par défaut ne doivent pas être utilisés

Élément Valeur
ID de la règle CA1026
Category Microsoft.Design
Modification avec rupture Rupture

Cause

Un type visible en externe contient une méthode visible en externe qui utilise un paramètre par défaut.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

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 CLS (Common Language Specification). Cette spécification permet toutefois aux compilateurs d’ignorer les valeurs attribuées à ces paramètres. Le code écrit pour les compilateurs qui ignorent les valeurs des paramètres par défaut doit fournir explicitement les arguments de chacun des paramètres 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éthodes fournissant les paramètres par défaut.

Le compilateur ignore les valeurs des paramètres par défaut de Managed Extension pour C++ lorsqu’il accède au code managé. Le compilateur Visual Basic prend en charge les méthodes comportant des paramètres par défaut qui utilisent le mot clé Facultatif.

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 fournissant les paramètres par défaut.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’exemple suivant montre une méthode qui utilise des paramètres par défaut et les méthodes surchargées qui fournissent des fonctionnalités équivalentes.

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

CA1025 : Remplacer les arguments répétitifs par un tableau params

Voir aussi

Indépendance du langage et composants indépendants du langage