VB2010: le novità sugli array

In Visual Basic 2008 era stato introdotto un nuovo concetto: la dichiarazione di variabili per inferenza. Con il termine "inferenza" intendiamo riferirci a quella particolare tecnica che permette di definire il tipo di dato di una variabile in base al valore che le viene assegnato.

Questa tecnica aveva suscitato alcune obiezioni, in particolar modo da alcuni puristi del linguaggio VB.NET che vedevano l’introduzione dell’inferenza come un ritorno del tipo Variant di VB6.

In realtà l’inferenza è molto diversa dal tipo Variant, perché quest’ultimo poteva assumere diversi tipi di dati nel corso dell’esecuzione del programma. La definizione per inferenza, invece, permette di definire il tipo di dato delle variabili solo al momento della prima assegnazione, poi non cambia più.

Il comportamento di Visual Basic nei confronti dell’inferenza è condizionato dallo stato di una particolare opzione del progetto: Option Infer. Impostando questa opzione a On (attivo per default) si potrà abilitare l’inferenza, mentre impostandola a Off si disabiliterà completamente.

Dopo questa doverosa premessa, scopriamo la novità di Visual Basic 2010: ora anche il tipo di dato degli array può essere definito per inferenza. Questo significa che possiamo scrivere del codice come il seguente:

 

Visual Basic
  1.     ' dichiarazioni per inferenza:
  2.     ' array di tipo Integer
  3.     Dim arrInteri = {10, 20, 30, 40, 50}
  4.     ' array di tipo String
  5.     Dim arrStringhe = {"Uno", "Due", "Tre"}
  6.     ' Naturalmente nulla vieta di utilizzare ancora la precedente sintassi:
  7.     ' dichiarazione secondo la vecchia sintassi:
  8.     Dim arrInteri2() As Integer = {5, 4, 3, 2, 1}

 

Se mescoliamo elementi di tipi diversi nell’insieme di elementi passati all’array, abbiamo due possibili comportamenti: se l’opzione del progetto denominata Option Strict è impostata a On, otterremo un errore, mentre se è impostata a Off l’array sarà di tipo Object.

Naturalmente consigliamo di impostare Option Strict On, perché l’utilizzo del tipo Object non è consigliabile, perché equivale all’utilizzo di Variant in VB6 e può diventare la fonte di un errore a runtime difficilmente individuabile.

Vi consigliamo, quindi, di impostare Option Strict On in tutti i vostri progetti, per garantirvi di restare sempre nell’ambito della tipizzazione forte, evitando in questo modo tanti grattacapi.

Un’altra novità degli array è l’introduzione degli array literals che permettono di dichiarare nello stesso modo sia degli array multidimensionali, sia i jagged array (matrici irregolari o array di array).

Abbiamo già visto la sintassi degli array literals nell’esempio di definizione e inizializzazione di un dizionario, ma vediamo ulteriori esempi, non necessariamente legati a classi contenitore del Framework (se non i classici array):

 

Visual Basic
  1.     ' definisco e inizializzo un array
  2.     ' multidimensionale
  3.     Dim arrCoppie =
  4.         {{5, 3}, {4, 2}, {1, 6}}
  5.     ' jagged array (il terzo gruppo ha
  6.     ' 3 elementi)
  7.     Dim arrJagged =
  8.         {({5, 3}), ({4, 2}), ({1, 7, 6})}

 

Per accedere a un array inserito all’interno di un altro array, possiamo utilizzare una sintassi molto intuitiva:

 

Visual Basic
  1.     ' accesso agli elementi del jagged array
  2.     Dim nuovoArray = arrJagged(1)
  3.     ' leggo il terzo elemento del terzo array
  4.     Dim elemento As Integer = arrJagged(2)(2)

 

Gli indici utilizzati all’interno delle parentesi sono inferiori di una unità alla posizione dell’elemento perché, lo ricordiamo, la base degli indici, nel .NET Framework, è sempre zero (non uno).

Pubblicato il 17 giugno 2011 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: