BC42025: dostęp do współużytkowanego elementu członkowskiego, stałego elementu członkowskiego, elementu członkowskiego wyliczenia lub typu zagnieżdżonego za pośrednictwem wystąpienia; wyrażenie kwalifikacyjne nie zostanie ocenione

Zmienna wystąpienia klasy lub struktury służy do uzyskiwania dostępu do zmiennej, właściwości, procedury lub zdarzenia zdefiniowanego Shared w tej klasie lub strukturze. To ostrzeżenie może również wystąpić, jeśli zmienna wystąpienia jest używana do uzyskiwania dostępu do niejawnie współużytkowanej składowej klasy lub struktury, takiej jak stała lub wyliczenie, albo zagnieżdżona klasa lub struktura.

Udostępnianie elementu członkowskiego polega na utworzeniu tylko jednej kopii tego elementu członkowskiego i udostępnieniu tej pojedynczej kopii dla każdego wystąpienia klasy lub struktury, w której jest zadeklarowana. Jest to zgodne z tym celem, aby uzyskać dostęp do składowej Shared za pośrednictwem nazwy jej klasy lub struktury, a nie przez zmienną, która zawiera pojedyncze wystąpienie tej klasy lub struktury.

Uzyskanie Shared dostępu do elementu członkowskiego za pomocą zmiennej wystąpienia może utrudnić zrozumienie kodu, zaciemniając fakt, że element członkowski jest Shared. Ponadto jeśli taki dostęp jest częścią wyrażenia, które wykonuje inne akcje, takie jak Function procedura zwracająca wystąpienie udostępnionego elementu członkowskiego, Visual Basic pomija wyrażenie i wszelkie inne akcje, które w przeciwnym razie wykona.

Aby uzyskać więcej informacji i przykład, zobacz Udostępnione.

Domyślnie ten komunikat jest ostrzeżeniem. Aby uzyskać więcej informacji na temat ukrywania ostrzeżeń lub traktowania ostrzeżeń jako błędów, zobacz Konfigurowanie ostrzeżeń w Visual Basic.

Identyfikator błędu: BC42025

Przykład

Poniższy przykład generuje bc42025:

Public Class TestClass
    Public Shared Sub SayHello()
        Console.WriteLine("Hello")
    End Sub
End Class

Module Program
    Public Sub Main()
        Dim tc As New TestClass()
        tc.SayHello() ' BC42025.
    End Sub
End Module

Aby rozwiązać to ostrzeżenie

Użyj nazwy klasy lub struktury, która definiuje składową Shared , aby uzyskać do niej dostęp, jak pokazano w poniższym przykładzie:

Public Class TestClass
    Public Shared Sub SayHello()
        Console.WriteLine("Hello")
    End Sub
End Class

Module Program
    Public Sub Main()
        TestClass.SayHello()
    End Sub
End Module

Uwaga / Notatka

Pamiętaj o skutkach zakresu, gdy dwa elementy programowania mają taką samą nazwę. W poprzednim przykładzie, jeśli zadeklarujesz wystąpienie przy użyciu metody Dim testClass As TestClass = Nothing, kompilator traktuje wywołanie testClass.SayHello() metody jako dostęp do metody za pomocą nazwy klasy i nie wystąpi ostrzeżenie.

Zobacz także