Udostępnij za pośrednictwem


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

Pozycja Wartość
Ruleid CA1026
Kategoria Microsoft.Design
Zmiana powodująca niezgodność Kluczowa

Przyczyna

Typ widoczny zewnętrznie zawiera zewnętrznie widoczną metodę, która używa parametru domyślnego.

Uwaga

Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.

Opis reguły

Metody korzystające z parametrów domyślnych są dozwolone w ramach specyfikacji języka wspólnego (CLS); jednak clS umożliwia kompilatorom ignorowanie wartości przypisanych do tych parametrów. Kod napisany dla kompilatorów, które ignorują domyślne wartości parametrów, muszą jawnie podać argumenty dla każdego parametru domyślnego. Aby zachować zachowanie w różnych językach programowania, metody używające parametrów domyślnych powinny zostać zastąpione przeciążeniami metod, które zapewniają parametry domyślne.

Kompilator ignoruje wartości domyślnych parametrów rozszerzenia zarządzanego dla języka C++ podczas uzyskiwania dostępu do kodu zarządzanego. Kompilator języka Visual Basic obsługuje metody, które mają domyślne parametry używające słowa kluczowego Optional .

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, zastąp metodę, która używa parametrów domyślnych przeciążeniami metody dostarczającymi parametry domyślne.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład

W poniższym przykładzie przedstawiono metodę, która używa parametrów domyślnych, oraz metody przeciążone, które zapewniają równoważną funkcjonalność.

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

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

Zobacz też

Niezależność od języka i składniki niezależne od języka