Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una variable de instancia de una clase o estructura se usa para tener acceso a una Shared variable, propiedad, procedimiento o evento definido en esa clase o estructura. Esta advertencia también puede producirse si se usa una variable de instancia para tener acceso a un miembro compartido implícitamente de una clase o estructura, como una constante o enumeración, o una clase o estructura anidada.
El propósito de compartir un miembro es crear solo una copia de ese miembro y hacer que esa copia única esté disponible para cada instancia de la clase o estructura en la que se declara. Es coherente con este propósito tener acceso a un Shared miembro a través del nombre de su clase o estructura, en lugar de a través de una variable que contiene una instancia individual de esa clase o estructura.
El acceso a un Shared miembro a través de una variable de instancia puede dificultar la comprensión del código ocultando el hecho de que el miembro es Shared. Además, si este acceso forma parte de una expresión que realiza otras acciones, como un Function procedimiento que devuelve una instancia del miembro compartido, Visual Basic omite la expresión y cualquier otra acción que realizaría de otro modo.
Para obtener más información y un ejemplo, vea Compartido.
De forma predeterminada, este mensaje es una advertencia. Para obtener más información sobre cómo ocultar advertencias o tratar advertencias como errores, vea Configurar advertencias en Visual Basic.
Identificador de error: BC42025
Ejemplo
En el ejemplo siguiente se genera 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
Para solucionar esta advertencia
Use el nombre de la clase o estructura que define el Shared miembro para acceder a él, como se muestra en el ejemplo siguiente:
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:
Tenga en cuenta los efectos del ámbito cuando dos elementos de programación tengan el mismo nombre. En el ejemplo anterior, si declara una instancia mediante Dim testClass As TestClass = Nothing, el compilador trata una llamada a testClass.SayHello() como acceso del método a través del nombre de clase y no se produce ninguna advertencia.