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