Visual Basic è un linguaggio molto diffuso, più verboso rispetto ad altri linguaggi, che dalla versione 7 è riservato alla programmazione basata sul .NET Framework. Essendo legato a quest'ultimo, VB è in continua evoluzione ed è giunto ormai alla versione 9. La sua uscita è legata al .NET Framework 3.5 il cui rilascio è previsto verso la fine dell'anno. In questa nuova versione sono presenti alcuni cambiamenti a livello di compilatore che mantengono VB un po' al passo con l'altro linguaggio prodotto da Microsoft, C# 3.0, mentre altre novità sono introdotte principalmente per essere sfruttate da LINQ e fornire un motore di interrogazione basato su query.
Principalmente le nuove caratteristiche sono:
- Variabili locali e array tipizzati implicitamente
- Supporto ai tipi nullabili
- Supporto integrato ad XML
- Inizializzatori di oggetti e collezioni
- Tipi anonimi
- Extension methods
- Lambda expressions
- Query expressions (LINQ)
Variabili locali e array tipizzati implicitamente
Per rendere più snello e veloce la stesura del codice, VB 9 dà la possibilità di dichiarare una variabile locale senza indicare il tipo, ma deducendolo dall'espressione di assegnazione che lo segue. Impostando Option Strict ad Off, è già attualmente possibile fare questo, ma il compilatore sotto intende che la variabile sia di tipo Object e ciò non ci offre nessun controllo sul tipo e sui valori che può assumere già direttamente nella fase di compilazione. Ecco una serie di esempi che fanno intuire l'uso di questa caratteristica:
Dim i = 1 ' Tipo integer Dim s = "ASPItalia.com" ' Tipo String Dim a = New Integer() {1, 3} ' Array di interi Dim p() = {4, 5} ' Array di interi tipizzato implicitamente Dim r ' Assunto tipo Object se Option Strict Off ' Se Option Strict On i = "Stringa" ' Errore in fase di compilazione s = 1 ' Errore in fase di compilazione
Da notare come, le variabili i e s sono legate alla loro dichiarazione originale, non possono variare di tipo e non sono assolutamente equiparabili al variant presente in VB 6, mentre il codice IL creato in fase di compilazione è il medesimo che si ottiene attualmente con VB 8 indicando per esteso il tipo della variabile.
La capacità di dedurre il tipo è controllabile mediante la nuova opzione: Option Infer On/Off.
Supporto ai tipi nullabili
Con l'uscita del .NET Framework 2.0 è stata aggiunta una nuova classe Nullable(Of T) che sfrutta i generics per permetterci di utilizzare variabili o campi che possano essere nullabili, cioè Nothing, anche se il tipo è di valore. Un esempio sono i vari Integer, Long, Date, Byte ai quali non è possibile impostare Nothing; situazione che si verifica di frequente soprattutto quando si ricevono queste informazioni da database. Seppur già sfruttabile questa caratteristica, solo con VB 9 è disponibile una sintassi compatta che ci permette di lavorare con le variabili nullabili in modo semplice. Ecco un esempio:
Dim d As DateTime? = DateTime.Now ' Equivale con VB 8 a: ' Dim d As Nullable(Of DateTime) = DateTime.Now d = Nothing ' Assegnazione a valore nullo If (d.HasValue) Then Console.WriteLine(d.Value) End If
L'uso del ? (punto di domanda) dopo il nome del tipo indica che il tipo è nullabile e ciò genera nei retroscena la dichiarazione commentata nel codice di esempio. Possiamo quindi assegnare un valore Nothing, mentre con HasValue conoscere se la variabile dispone di un valore ed eventualmente ottenere il suo effettivo valore con la proprietà Value.
Supporto integrato ad XML
Caratteristica non presente in C# 3.0, il supporto ad XML ci consente di inserire XML direttamente nel codice VB 9 e di includere all'interno del markup espressioni tipizzate. Per esempio, per creare un tag root con un attributo e un nodo testuale possiamo fare:
Dim i As Integer = 5 Dim s = <root id=<%= i %>> Text node </root> ' Diventa ' Dim s2 As New XElement(XName.Get("root", ""), New Object() {VisualBasicExtensions.CreateXAttribute(XName.Get("id", ""), i), "Text node"}) ' Classe autogenerata System.Xml.Linq.VisualBasicExtensions ' per ottenere XElement e XAttribute
I segnaposti <%= %>, uguali tra l'altro ad ASP 3.0, permettono di inserire un'espressione che viene poi inserita nell'XML. In realtà, dietro le quinte, il compilatore VB 9 genera del codice che facendo uso delle classi XElement e XAttribute della libreria LINQ for XML e di una classe autogenerata VisualBasicExtensions, permette di rappresentare il documento XML come classi .NET. La variabile "s" è infatti di tipo XElement e contiene metodi che permettono la manipolazione in modo simile a XML DOM, come già si fa con l'attuale .NET Framework 2.0.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.