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.
Aggiornamento: novembre 2007
Un membro condiviso è un membro di una classe (ad esempio una proprietà o una routine) che, anche se disponibile per tutte le istanze di una classe, non è associato ad alcuna istanza particolare della stessa. Per ulteriori informazioni sui membri condivisi, vedere Membri condivisi in Visual Basic.
Dati di istanza e dati condivisi
I dati di istanza corrispondono all'insieme di dati creato quando si esegue la parola chiave New. I dati condivisi di una classe, invece, sono creati indipendentemente dalle esecuzioni della parola chiave New.
Visual Basic 6.0
In Visual Basic 6.0 non è previsto il supporto per i dati condivisi nella definizione delle classi. Per condividere i dati fra istanze di una classe si utilizza una variabile globale in un modulo.
Visual Basic 2008
I dati condivisi sono dichiarati aggiungendo il modificatore Shared (Visual Basic) all'istruzione di dichiarazione della variabile, come mostrato di seguito.
Private Shared totalInstances As Integer
Metodi condivisi
Visual Basic 6.0
In Visual Basic 6.0 non è previsto il supporto per i membri di classe condivisi. Tuttavia, una funzionalità analoga è disponibile mediante l'utilizzo dei moduli. Nella fase di esecuzione viene creata solo un'istanza dei dati di un modulo. L'ambito dei dati e dei metodi di un modulo si estende all'intero progetto. Di seguito è riportato un esempio di libreria implementata in un modulo:
Public Sub GetTitle(wordXml As String)
' Add code here to find title in Xml string.
End Sub
Public Sub ReplaceTitle(wordXml As String, newTitle As String)
' Add code here to replace title.
End Sub
Visual Basic 2008
Un approccio ai moduli più orientato ad oggetti è utilizzare i membri di classe condivisi nel caso in cui i membri siano correlati fra loro come libreria o quando i membri sono correlati a una classe esistente. In base al progetto si determinerà se tutti i membri sono condivisi o se una classe presenta una combinazione di membri condivisi e di istanza. Se la classe presenta solo membri condivisi, anche l'aggiunta di un solo costruttore privato impedirà che la classe venga istanziata dal codice client. Nell'esempio di seguito riportato si descrive una classe che non può essere istanziata dal codice client e un codice client che chiama uno dei membri della classe.
Public Class WordLibrary
Public Shared Sub GetTitle(ByVal wordXml As String)
' Add code here to find title in Xml string.
End Sub
Public Shared Sub ReplaceTitle(ByVal wordXml As String, _
ByVal newTitle As String)
' Add code here to replace title.
End Sub
Private Sub New()
' This prevents instantiation of the class in the client.
End Sub
End Class
' Code that calls the library method.
Sub ChangeTheTitle()
WordLibrary.ReplaceTitle("Old Title", "New Title")
End Sub
Alcuni dei vantaggi ottenuti utilizzando una classe anziché un modulo per questa libreria sono:
La libreria presenta un nome, WordLibrary, che viene esplicitamente menzionato nel codice.
I metodi sono raggruppati in un'unica classe in cui si evidenziano le relazioni fra i metodi.
L'utilizzo di un costruttore privato evidenzia chiaramente che la classe in questione fornisce un insieme di metodi di utilità.
Il codice client utilizza il nome della libreria, rendendo l'organizzazione del progetto più leggibile.
In .NET Framework i metodi condivisi sono in genere utilizzati per implementare funzionalità correlate a una classe senza tuttavia dover utilizzare un'istanza della classe. Un esempio è il metodo Parse, supportato da molti tipi di dati di .NET Framework. Il tipo Tipo di dati Integer (Visual Basic) supporta un metodo Parse che accetta una stringa come parametro. Il metodo Parse restituisce l'intero rappresentato dalla stringa. Non ha senso che il metodo Parse sia un metodo membro. Non vi è alcun valore integer da gestire, bensì solo una stringa.
Accesso a membri condivisi
Visual Basic 6.0
In Visual Basic 6.0 non è previsto il supporto per i membri di classe condivisi.
Visual Basic 2008
Per accedere ai membri condivisi è possibile utilizzare il nome della classe o dell'istanza, come mostrato di seguito.
WordLibrary.ReplaceTitle("Old Title", "New Title")
I metodi condivisi non possono accedere ai dati di alcuna istanza a meno che non al metodo condiviso non venga passato un riferimento a un'istanza della classe.
Suggerimenti per l'aggiornamento
Il modulo WordLibrary di Visual Basic 6.0 viene convertito nel codice mostrato di seguito:
Module WordLibrary
Public Sub GetTitle(ByRef wordXml As String)
' Add code here to find title in Xml string.
End Sub
Public Sub ReplaceTitle(ByRef wordXml As String, _
ByRef newTitle As String)
' Add code here to replace title.
End Sub
End Module
Quando si aggiorna il codice del modulo da Visual Basic 6.0 a Visual Basic 2008 si considerino le seguenti operazioni:
Organizzazione dei metodi e dei dati del modulo in classi e conversione degli stessi in metodi e dati condivisi.
Spostamento dei metodi del modulo in classi esistenti e conversione dei metodi in metodi condivisi quando il metodo è correlato alla classe.