BC42025: Akses anggota bersama, anggota konstanta, anggota enum, atau jenis berlapis melalui instans; ekspresi yang memenuhi syarat tidak akan dievaluasi

Variabel instans kelas atau struktur digunakan untuk mengakses Shared variabel, properti, prosedur, atau peristiwa yang ditentukan dalam kelas atau struktur tersebut. Peringatan ini juga dapat terjadi jika variabel instans digunakan untuk mengakses anggota kelas atau struktur yang dibagikan secara implisit, seperti konstanta atau enumerasi, atau kelas atau struktur berlapis.

Tujuan berbagi anggota adalah untuk membuat hanya satu salinan anggota tersebut dan membuat salinan tunggal tersebut tersedia untuk setiap instans kelas atau struktur tempatnya dideklarasikan. Ini konsisten dengan tujuan ini untuk mengakses Shared anggota melalui nama kelas atau strukturnya, daripada melalui variabel yang menyimpan instans individu dari kelas atau struktur tersebut.

Shared Mengakses anggota melalui variabel instans dapat membuat kode Anda lebih sulit dipahami dengan mengaburkan fakta bahwa anggotanya adalah Shared. Selain itu, jika akses tersebut adalah bagian dari ekspresi yang melakukan tindakan lain, seperti Function prosedur yang mengembalikan instans anggota bersama, Visual Basic melewati ekspresi dan tindakan lain yang akan dilakukannya.

Untuk informasi selengkapnya dan contohnya, lihat Dibagikan.

Secara default, pesan ini adalah peringatan. Untuk informasi selengkapnya tentang menyembunyikan peringatan atau memperlakukan peringatan sebagai kesalahan, lihat Mengonfigurasi Peringatan di Visual Basic.

ID Kesalahan: BC42025

Contoh

Contoh berikut menghasilkan 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

Untuk mengatasi peringatan ini

Gunakan nama kelas atau struktur yang menentukan Shared anggota untuk mengaksesnya, seperti yang ditunjukkan dalam contoh berikut:

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

Nota

Waspadalah untuk efek cakupan ketika dua elemen pemrograman memiliki nama yang sama. Dalam contoh sebelumnya, jika Anda mendeklarasikan instans dengan menggunakan Dim testClass As TestClass = Nothing, pengkompilasi memperlakukan panggilan testClass.SayHello() sebagai akses metode melalui nama kelas, dan tidak ada peringatan yang terjadi.

Lihat juga