Sdílet prostřednictvím


CA1026: Výchozí parametry by neměl být použit

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 Volitelné (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: Nahradit opakující argumenty params matice

Viz také

Koncepty

Specifikace CLS (Common Language Specification)