BC30369: impossibile fare riferimento a un membro dell'istanza di una classe dall'interno di un metodo condiviso o da un inizializzatore membro condiviso senza un'istanza esplicita della classe

Si è tentato di fare riferimento a un membro non condiviso di una classe dall'interno di una procedura condivisa. Nell'esempio seguente viene illustrata una situazione di questo tipo:

Class Sample
    Public x as Integer
    Public Shared Sub SetX()
        x = 10
    End Sub
End Class

Nell'esempio precedente, l'istruzione x = 10 di assegnazione genera questo messaggio di errore. Ciò è dovuto al fatto che una procedura condivisa sta tentando di accedere a una variabile di istanza.

La variabile x è un membro dell'istanza perché non è dichiarata come Condivisa. Ogni istanza della classe Sample contiene la propria variabile xindividuale. Quando un'istanza imposta o modifica il valore di x, non influisce sul valore di x in qualsiasi altra istanza.

Tuttavia, la routine SetX è Shared tra tutte le istanze della classe Sample. Ciò significa che non è associato a un'istanza della classe, ma opera in modo indipendente dalle singole istanze. Poiché non ha alcuna connessione con una determinata istanza, setX non può accedere a una variabile di istanza. Deve operare solo sulle Shared variabili. Quando SetX imposta o modifica il valore di una variabile condivisa, tale nuovo valore è disponibile per tutte le istanze della classe.

ID errore: BC30369

Per correggere l'errore

  1. Decidere se si vuole che il membro venga condiviso tra tutte le istanze della classe o sia mantenuto individuale per ogni istanza.

  2. Se si desidera che una singola copia del membro venga condivisa tra tutte le istanze, aggiungere la Shared parola chiave alla dichiarazione del membro. Mantenere la Shared parola chiave nella dichiarazione della routine.

  3. Se si desidera che ogni istanza disponga di una propria copia individuale del membro, non specificare Shared per la dichiarazione del membro. Rimuovere la Shared parola chiave dalla dichiarazione della routine.

Vedere anche