Udostępnij za pośrednictwem


CA1026: Nie należy używać domyślnych parametrów

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 Opcjonalne (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: Zamień powtarzające się argumenty params tablicy

Zobacz też

Koncepcje

Common Language Specification