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

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 l'extension managée pour C++ lors de l'accès au code managé. Le compilateur Visual Basic prend en charge les méthodes qui ont des paramètres par défaut qui utilisent le 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

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

Voir aussi

Concepts

CLS (Common Language Specification)