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
Sia in Visual Basic 6.0 che in Visual Basic 2008 sono supportati gli oggetti per cui è prevista l'associazione tardiva, ossia la procedura di definizione di una variabile come tipo di dati Object e l'assegnazione della stessa all'istanza di una classe in fase di esecuzione. Durante il processo di aggiornamento, gli oggetti per cui è prevista l'associazione tardiva possono tuttavia presentare problemi nella risoluzione delle proprietà predefinite o nei casi in cui il modello di oggetti sottostante è stato modificato e occorre convertire proprietà, metodi ed eventi. Si supponga ad esempio di avere un form denominato Form1 con un'etichetta Label1; con il seguente codice di Visual Basic 6.0 viene impostata la didascalia dell'etichetta su "SomeText":
Dim o As Object
Set o = Me.Label1
o.Caption = "SomeText"
In Visual Basic 2008 la proprietà Caption di un controllo di un'etichetta è sostituita dalla proprietà Text. Con l'aggiornamento del codice, tutte le istanze della proprietà Caption vengono convertite in Text, ma poiché gli oggetti per cui è prevista l'associazione tardiva sono privi di tipologia, Visual Basic non è in grado di rilevare il tipo di oggetto o di stabilire se è necessario convertirne alcune proprietà. In tal caso, occorre modificare il codice dopo l'aggiornamento.
Se il codice viene riscritto mediante oggetti per cui è prevista l'associazione anticipata, l'aggiornamento sarà automatico:
Dim o As Label
Set o = Me.Label1
o.Text = "SomeText"
Dove possibile, è opportuno dichiarare le variabili del tipo di oggetto appropriato piuttosto che definirle semplicemente come tipo di dati Object.
Nei casi in cui si ricorre alle variabili Object e Variant nel codice Visual Basic 6.0, è consigliabile utilizzare le conversioni esplicite quando si assegnano variabili, si eseguono operazioni sulle variabili o si passano le variabili a una funzione. Lo scopo dell'operazione "+" nel codice seguente, ad esempio, non è chiaro:
Dim Var1 As Variant
Dim Var2 As Variant
Dim Var3 As Variant
Var1 = "3"
Var2 = 4
'BAD: Should Var1 and Var2 be added as strings or integers?
Var3 = Var1 + Var2
L'esempio precedente può provocare un errore di runtime in Visual Basic 2008. Riscrivendo la riga finale in modo da utilizzare le conversioni esplicite si garantisce il funzionamento del codice:
'GOOD: explicit conversion
Var3 = CInt(Var1) + CInt(Var2)
In Visual Basic 2008 sono supportate le funzioni di overloading basate sul tipo di parametro. La funzione Environ, ad esempio, dispone ora di due forme:
Environ( Expression As Integer) As String
Environ( Expression As String ) As String
In Visual Basic 2008 viene stabilito quale funzione chiamare a seconda del tipo di parametro. Se si passa un valore integer a Environ(), viene richiamata la versione integer, mentre se si passa un valore string, viene richiamata la versione string. Il codice che passa un tipo di dati Variant o Object a una funzione in overload può causare un errore di compilazione o di runtime. Se si utilizza una conversione esplicita come nell'esempio seguente, il codice funzionerà nel modo stabilito dopo l'aggiornamento a Visual Basic 2008:
Dim a As String
Dim v As Variant
v = "Path"
'GOOD: explicit conversion
a = Environ(CStr(v))
L'utilizzo delle conversioni esplicite di oggetti per cui è prevista l'associazione tardiva è un metodo corretto di codificazione, poiché semplifica la definizione dello scopo del codice e facilita l'aggiornamento del progetto a Visual Basic 2008.
Vedere anche
Altre risorse
Raccomandazioni relative al linguaggio in funzione dell'aggiornamento