Sdílet prostřednictvím


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ů

Viz také

Koncepty

Jazyková nezávislost a jazykově nezávislé komponenty