Udostępnij za pośrednictwem


CA1026: Domyślne parametry nie powinny być używane

TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

Kategoria

Microsoft.Design

Zmiana kluczowa

Kluczowa

Przyczyna

Typ widoczny z zewnątrz zawiera metodę widoczną z zewnątrz, która wykorzystuje parametr domyślny.

Opis reguły

Metody, które używają parametrów domyślnych są dozwolone na mocy specyfikacji wspólnego języka (CLS); Jednakże CLS umożliwia kompilatorom ignorowanie wartości, które są przypisane do tych parametrów.Kod napisany dla kompilatorów, które ignorują wartości domyślne parametrów musi jawnie podać argumenty dla każdego parametru domyślnego.Aby zachować zachowanie w językach programowania, metody, które używają parametrów domyślnych powinien zostać zastąpione przez przeciążone metody, które zapewniają domyślne parametry.

Kompilator ignoruje wartości domyślne parametrów dla rozszerzenia zarządzanego dla C++, gdy uzyskuje dostęp do kodu zarządzanego.Kompilator Visual Basic obsługuje metody, które mają parametry domyślne, które używają słowa kluczowego Optional (Visual Basic).

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, należy zastąpić metodę, która korzysta z parametru domyślnego metodą przeciążoną, aby przekazać domyślne parametry.

Kiedy pomijać ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

W poniższym przykładzie metoda, która korzysta z domyślnych parametrów i metody przeciążane, zapewniają równoważne funkcje.

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

Powiązane reguły

CA1025: Zastąp powtarzające się argumenty tabelą parametrów

Zobacz też

Koncepcje

Niezależność od języka i elementy niezależne od języka