ASP.Net  »  Articoli  »  Mondo ASP.NET 

Novità di Visual Basic 2005

di: Mauro Bennici     17 Febbraio 2006

Proprio in termini di casting abbiamo adesso a nostra disposizione i comandi 'TryCast' e 'TryParse'. Il primo tenta la conversione di un tipo reference e restituisce 'Nothing' in caso di fallimento mentre il secondo è un'evoluzione del metodo 'Parse'. A differenza dei corrispettivi 'CType' e 'Parse' questi non causeranno delle eccezioni in caso di fallimento. Per esempio:

Dim NumeroIntero As Integer
Dim NumeroStringa As String
Dim Risultato As Boolean
Risultato = Integer.TryParse(NumeroStringa, NumeroIntero)

non causerà nessuna eccezione ma assegnerà a Risultato True o False a seconda se la conversione è andata a buon fine o meno e a NumeroIntero il valore convertito di stringa o il suo valore predefinito ovvero 0. Possiamo quindi dire addio ai blocchi Try - Catch - Finally necessari per effettuare una conversione a rischio e per essere sicuri che il nostro programma non si blocchi e/o che non liberi le risorse occupate. È presente anche un metodo 'TryParseExact' per le date.

Inoltre, chi ha già avuto modo di scrivere del codice con il Framework 1.0 o 1.1 si sarà trovato nella situazione di dovere controllare ad uno ad uno i campi di un datareader per controllare che non siamo né 'Nothing' né vuoti per ogni singolo valore. Per velocizzare questa fastidiosa e lenta fase possiamo usare il metodo 'IsNullOrEmpty':

Vecchio metodo:
If Not dr("valore") Is Nothing AndAlso dr("valore").ToString().Length() > 0 Then

Nuovo Metodo:
If String.IsNullOrEmpty(dr("valore")) Then

Scrivendo in Visual Web Developer (VWD) la dichiarazione di NumeroStringa noteremo che l'ambiente la sottolineerà in verde, questo perchè il compilatore tende a segnalare tutte le variabili che potrebbero causare delle eccezioni. Nel caso di una stringa viene suggerita la sua impostazione a '' o al valore equivalente String.Empty, a differenza di quanto si possa pensare questo non comporterà un aumento di memoria utilizzata poiché tutte queste stringhe puntano ad uno stesso indirizzo.

Se nello scrivere la nostra applicazione vogliamo un controllo del codice più serrato possiamo impostare a 'True' l'opzione 'Option Strict', dalla riga apposita presente nel Web.Config nel caso di progetti Web,

<compilation debug="true" strict="false" explicit="true"/>

che obbligherà il compilatore a segnalare tutti i casi in cui un'operazione potrebbe causare un'eccezione. In genere si tratta di operazioni di casting non effettuate o effettuate senza sufficiente controllo.

Chi si interfaccia con le API di Windows potrà di nuovo usare i tipi 'Unsigned', ovvero senza segno. I tipi a disposizione sono 'SByte', 'UShort', 'UInteger' e 'ULong'. Questi tipi di dato possono essere usati anche per risparmiare spazio in memoria, per esempio nella nostra funzione di Addizione potremo usare il tipo 'UInteger' per farci restituire la somma di due 'Integer' senza dover ricorrere ad una variabile di tipo 'Long'.

Altra funzione adesso presente anche in Visual Basic 2005 è il blocco 'Using'. Questo blocco definisce delle operazioni con un oggetto che è possibile gettare alla fine del blocco. Per esempio la semplice scrittura di una nota su di un file di log. Al termine del blocco l'oggetto verrà distrutto all'istante, è consigliabile l'utilizzo con sequenze di codice che occupino una gran quantità di memoria.

Using FileDiLog As New System.IO.StreamWriter("c:\FileDiLog.txt")
  FileDiLog.WriteLine("Questo è un file di log!")
End Using

Gli sviluppatori Visual Basic 6 che ancora non si sono abituati alle matrici con limite 0 posso dichiararle anche in modo esplicito, così facendo perlomeno ci verrà ricordato all'instante il nuovo modo.

Dim MyMatrix(0 To 100) As String

È stata anche posta una pezza ad un buco logico che portava a scrivere una gran quantità di codice, sto parlando dell'istruzione 'Continue' che abilita i cicli 'Do', 'For' e 'While' ad una rapida uscita senza dovere ricorrere al comando 'Goto' e/o innumerevoli variabili di stato con relative 'If'. Provate ad immaginare questo esempio della guida senza l'istruzione 'Continue'.

Dim row, col As Integer
Dim lastrow As Integer =6
Dim lastcol As Integer = 10

Dim a(,) As Double = New Double(lastrow, lastcol){}
Dim b(7) As Double

row = -1

While row < lastrowrow += 1
  col = -1

  While col < lastcol
    col += 1
    a(row,col) = 0

    For i As Integer = 0 To b.GetUpperBound(0)
      If b(i) = col Then
        Continue While
      Else
        a(row, col) += (row + b(i)) / (col - b(i))
      End If
    Next i
    End While
  End While

Infine una delle novità, se non la novità in assoluto, è l'introduzione dei 'Generics' che vista l'importanza verranno trattati in un articolo a loro dedicato.

Per concludere abbiamo visto che le novità introdotte nell'ultima versione di Visual Basic sono tante e tutte molto interessanti al punto da fare affermare che sia stata la più importante versione mai rilasciata e, spot e campagna di marketing a parte, sembra proprio così.

Visual Basic 2005, con il Framework.Net 2.0, aumenta le sue potenzialità colmando allo stesso tempo il divario tra C# e Visual Basic 6.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto