Share via


Standardparameter sollten nicht verwendet werden

Aktualisiert: November 2007

     TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

Kategorie

Microsoft.Design

Unterbrechende Änderung

Breaking

Ursache

Ein extern sichtbarer Typ enthält eine extern sichtbare Methode, die einen Standardparameter verwendet.

Regelbeschreibung

Methoden, die Standardparameter verwenden, sind nach der Common Language Specification (CLS) zulässig. Die CLS lässt jedoch zu, dass die Werte, die diesen Parametern zugewiesen sind, von Compilern ignoriert werden. In Code, der für Compiler geschrieben wurde, die Standardparameterwerte ignorieren, müssen Argumente für jeden Standardparameter explizit bereitgestellt werden. Damit das gewünschte Verhalten in verschiedenen Programmiersprachen erhalten bleibt, müssen Methoden, die Standardparameter verwenden, durch Methodenüberladungen ersetzt werden, von denen die Standardparameter bereitgestellt werden.

Beim Zugriff auf verwalteten Code werden die Werte von Standardparametern für C# und für Managed Extensions for C++ vom Compiler ignoriert. Der Visual Basic-Compiler unterstützt Methoden mit Standardparametern durch das Optional (Visual Basic)-Schlüsselwort.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, ersetzen Sie die Methode, die Standardparameter verwendet, durch Methodenüberladungen, die Standardparameter bereitstellen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Das folgende Beispiel zeigt eine Methode, die Standardparameter verwendet, sowie die überladenen Methoden, die eine entsprechende Funktionalität bereitstellen.

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

Verwandte Regeln

Sich wiederholende Argumente durch ein Parameterarray ersetzen

Siehe auch

Konzepte

CLS (Common Language Specification)