CA1026: Standardparameter sollten nicht verwendet werden
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 Managed Extensions für C++ vom Compiler ignoriert. Der Visual Basic-Compiler unterstützt Methoden, die über Standardparameter verfügen, die das Optional (Visual Basic)-Schlüsselwort verwenden.
Behandeln 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
CA1025: Sich wiederholende Argumente durch ein Parameterarray ersetzen