CA1026: Neměly by být použity výchozí parametry
TypeName |
DefaultParametersShouldNotBeUsed |
CheckId |
CA1026 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Externě viditelný typ obsahuje externě viditelnou metodu, která používá výchozí parametr.
Popis pravidla
Metody, které používají výchozí parametry jsou povoleny v rámci specifikace CLS (Common Language Specification), nicméně CLS umožňuje kompilátorům ignorování hodnot, které jsou přiřazeny těmto parametrům.Kód, který je napsán pro kompilátory, které Ignorují výchozí hodnoty parametrů musí explicitně poskytnout argumenty pro každý výchozí parametr.Chcete-li zachovat shodné chování napříč programovacími jazyky, měly by být metody používající výchozí parametry nahrazeny přetíženými metodami, které výchozí parametry poskytují.
Kompilátor při přístupu ke spravovanému kódu ignoruje hodnoty výchozích parametrů pro spravované rozšíření jazyka C++.Kompilátor jazyka Visual Basic podporuje metody, které mají výchozí parametry používající klíčové slovo Nepovinné (Visual Basic).
Jak vyřešit porušení
Pro vyřešení porušení tohoto pravidla je zapotřebí nahradit metodu, která používá výchozí parametry přetíženími metody, které poskytují výchozí parametry.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
Následující příklad zobrazuje metodu, která používá výchozí parametry a přetížené metody, které poskytují rovnocennou funkcionalitu.
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
Související pravidla
CA1025: Nahraďte opakované argumenty polem parametrů