Condividi tramite


Membri condivisi in Visual Basic

Aggiornamento: novembre 2007

I membri condivisi sono proprietà, routine e campi che sono condivisi da tutte le istanze di una classe o di una struttura. In alcuni linguaggi di programmazione i membri condivisi sono definiti membri statici.

Proprietà e campi condivisi

Le proprietà e i campi condivisi risultano utili quando si dispone di informazioni che fanno parte di una classe ma non sono specifiche di una determinata istanza di una classe. La modifica del valore di una proprietà e di un campo condivisi determina la modifica del valore associato alla classe e a tutte le relative istanze.

Al contrario, la modifica del valore di una proprietà o di un campo non condiviso associato a una delle istanze non influisce sul valore di tale campo o proprietà in altre istanze della classe. Le proprietà e i campi non condivisi esistono in modo indipendente per ciascuna istanza di una classe.

Le proprietà e i campi condivisi si comportano quindi come variabili globali, a cui è possibile accedere solo dalle istanze di una classe o con la qualifica del nome della classe. Senza le proprietà e i campi condivisi, per ottenere lo stesso risultato sarebbe necessario utilizzare le variabili a livello di modulo. Tuttavia, se si utilizzano le variabili a livello modulo la comprensione e la gestione delle classi potrebbe risultare più complessa. Questo tipo di utilizzo delle variabili a livello modulo contrasta inoltre con il concetto di incapsulamento rappresentato dalle classi.

Routine condivise

Le routine condivise sono metodi di classe non associati a un'istanza specifica di una classe. Il metodo Cos definito all'interno della classe Math, ad esempio, è un metodo condiviso. È possibile chiamare una routine condivisa come metodo di un oggetto oppure direttamente dalla classe.

Le routine e le proprietà condivise non possono accedere alle istanze della classe. Per questo motivo, nei metodi condivisi sono consentiti solo riferimenti qualificati a membri dati non condivisi.

Nota:

Si consiglia di non scrivere codice nel quale l'accesso a un membro condiviso venga effettuato mediante un'istanza della classe, in quanto il compilatore ignora la qualifica del membro condiviso e lo considera come se l'accesso fosse avvenuto direttamente dalla classe. In alcuni casi è possibile che il tentativo di esecuzione di codice con l'oggetto qualificato determini nel compilatore Visual Basic la generazione di un avviso per segnalare l'accesso di un membro condiviso mediante un'istanza della classe. In IntelliSense non vengono visualizzati membri condivisi per un'istanza della classe.

Esempio di membri condivisi

Nell'esempio riportato di seguito vengono creati un campo condiviso, due campi di istanza e un metodo condiviso per illustrare come operano nel codice i membri condivisi.

Public Class Item
    Public Shared Count As Integer = 1
    Public Shared Sub ShareMethod()
        MsgBox("Current value of Count: " & Count)
    End Sub

    Public Sub New(ByVal Name As String)
        ' Use Count to initialize SerialNumber.
        Me.SerialNumber = Count
        Me.Name = Name
        ' Increment the shared variable
        Count += 1
    End Sub
    Public SerialNumber As Integer
    Public Name As String
    Public Sub InstanceMethod()
        MsgBox("Information in the first object: " & _
            Me.SerialNumber & vbTab & Me.Name)
    End Sub
End Class

Sub TestShared()
    ' Create two instances of the class.
    Dim part1 As New Item("keyboard")
    Dim part2 As New Item("monitor")

    part1.InstanceMethod()
    part2.InstanceMethod()
    Item.ShareMethod()
End Sub

Quando si esegue la routine TestShared, vengono create due istanze della classe. Il costruttore utilizza il campo condiviso Count per inizializzare il campo di istanza SerialNumber, quindi incrementa il valore di Count. Con questa tecnica viene assegnato automaticamente a ciascuna istanza un numero di serie diverso.

Una volta create le due istanze, il metodo di istanza InstanceMethod viene chiamato su entrambi gli oggetti. Viene inoltre chiamato il metodo condiviso ShareMethod. L'output è il seguente:

Information in the first object: 1 keyboard

Information in the second object: 2 monitor

Current value of the shared Count field: 3

Vedere anche

Concetti

Strutture e classi

Riferimenti

Istruzione Dim (Visual Basic)

Cos

Altre risorse

Proprietà, campi e metodi delle classi

Strutture: tipi di dati dell'utente