Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una variabile di istanza di una classe o di una struttura viene utilizzata per accedere a una variabile, a una proprietà, a una routine o a un Shared evento definito in tale classe o struttura. Questo avviso può verificarsi anche se una variabile di istanza viene usata per accedere a un membro condiviso in modo implicito di una classe o di una struttura, ad esempio una costante o un'enumerazione o una classe o una struttura annidata.
Lo scopo della condivisione di un membro consiste nel creare una sola copia di tale membro e rendere disponibile tale singola copia a ogni istanza della classe o della struttura in cui viene dichiarata. È coerente con questo scopo per accedere a un Shared membro tramite il nome della relativa classe o struttura, anziché tramite una variabile che contiene una singola istanza di tale classe o struttura.
L'accesso a un Shared membro tramite una variabile di istanza può rendere il codice più difficile da comprendere nascondendo il fatto che il membro è Shared. Inoltre, se tale accesso fa parte di un'espressione che esegue altre azioni, ad esempio una Function routine che restituisce un'istanza del membro condiviso, Visual Basic ignora l'espressione e qualsiasi altra azione che altrimenti eseguirà.
Per altre informazioni e un esempio, vedere Condiviso.
Per impostazione predefinita, questo messaggio è un avviso. Per altre informazioni su come nascondere gli avvisi o considerare gli avvisi come errori, vedere Configurazione degli avvisi in Visual Basic.
ID errore: BC42025
Esempio
L'esempio seguente genera l'errore 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
Per risolvere questo avviso
Usare il nome della classe o della struttura che definisce il Shared membro per accedervi, come illustrato nell'esempio seguente:
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
Annotazioni
Ricevere un avviso per gli effetti dell'ambito quando due elementi di programmazione hanno lo stesso nome. Nell'esempio precedente, se si dichiara un'istanza usando Dim testClass As TestClass = Nothing, il compilatore considera una chiamata a testClass.SayHello() come accesso del metodo tramite il nome della classe e non viene generato alcun avviso.