Accesso di membro condiviso tramite un'istanza; l'espressione di qualificazione non verrà valutata

Aggiornamento: novembre 2007

Access of shared member through an instance; qualifying expression will not be evaluated

Una variabile di istanza di una classe o struttura è utilizzata per accedere a una variabile, proprietà, routine o evento Shared definito in tale classe o struttura. Questo messaggio può venire visualizzato anche se si utilizza una variabile di istanza per accedere a un membro condiviso in modo implicito di una classe o di una struttura, ad esempio una costante o un'enumerazione, oppure una classe o una struttura nidificata.

Un membro viene condiviso per creare una sola copia di tale membro e renderla disponibile a tutte le istanze della classe o della struttura in cui viene dichiarato. Di conseguenza, per accedere a un membro Shared è preferibile utilizzare il nome della relativa classe o struttura, anziché una variabile che include una singola istanza di tale classe o struttura.

L'accesso a un membro Shared mediante una variabile di istanza, infatti, può rendere il codice più complicato e nascondere il valore Shared del membro. Inoltre, se questo tipo di accesso fa parte di un'espressione che esegue altre azioni, come ad esempio la routine Function che restituisce un'istanza del membro condiviso, in Visual Basic vengono ignorate l'espressione e tutte le altre azioni che altrimenti verrebbero eseguite.

Per ulteriori informazioni e un esempio, vedere Shared (Visual Basic).

Per impostazione predefinita, si tratta di un messaggio di avviso. Per ulteriori informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configurazione degli avvisi in Visual Basic.

ID errore: BC42025

Per correggere l'errore

  • Utilizzare il nome della classe o della struttura che definisce il membro Shared per accedervi.

  • Quando due elementi di programmazione presentano lo stesso nome, prestare attenzione agli effetti dell'ambito. Nell'esempio seguente viene dichiarata una variabile testClass con lo stesso nome della classe a cui viene tipizzata. Il compilatore interpreta la chiamata a sayHello() come un accesso tramite il nome della classe testClass e non viene visualizzato alcun avviso.

    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    Module testModule
        Public Sub Main()
            Dim testClass As testClass = Nothing
            testClass.sayHello()
        End Sub
    End Module
    

Vedere anche

Concetti

Ambito in Visual Basic

Riferimenti

Shared (Visual Basic)