Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Visual Basic 2010: collection initializers

Tra le novità della prossima versione di Visual Basic, la 2010, rientrano gli inizializzatori di collezioni o, meglio, i “collection initializers”. Cosa ci consentono di fare? Ci permettono di istanziare e popolare una collection direttamente nella dichiarazione di istanza, un po’ come avviene con gli object initializer introdotti con VB 2008.

 

Vediamo un esempio. Il seguente codice inizializza una collezione generica di stringhe e la popola:

 

Dim stringsList As New List(Of String) From {"Alessandro", "Antonio", "Diego"}

 

Utilizzando la parola chiave From, possiamo popolare la List con gli elementi racchiusi tra parentesi graffe. Il codice di cui sopra equivale a scrivere:

 

        Dim stringsList As New List(Of String)

        With stringsList

            .Add("Alessandro")

            .Add("Antonio")

            .Add("Diego")

        End With

 

Facciamo un altro esempio con i Dictionary(Of T, T). Il seguente codice istanzia e popola una collezione Dictionary:

 

        Dim testDictionary As New Dictionary(Of String, Integer) From {{"Alessandro", 1},

                                                                       {"Diego", 2},

                                                                       {"Antonio", 3}}

 

Come potete vedere, le coppie chiave-valore sono racchiuse tra parentesi graffe. Se siete attenti, noterete anche l’assenza del carattere underscore (_) per andare a capo, una nuova caratteristica di VB 2010.

Se poi volete verificare il risultato di questa inizializzazione, basta un piccolo ciclo:

 

        For Each item In testDictionary

            Console.WriteLine("{0}, {1}", item.Key, item.Value)

        Next

 

Chiaramente tutto questo si può utilizzare in scenari più interessanti. Supponiamo di avere una classe Customer, che rappresenta un cliente:

 

Public Class Customer

 

    'Le "auto-implemented properties"!!

    Public Property CustomerID As Integer

    Public Property CompanyName As String

    Public Property ContactName As String

 

End Class

 

Supponiamo ora di avere tre istanze di tale classe, definite in questo modo:

 

        Dim Alessandro As New Customer With {.CustomerID = 1,

                                             .CompanyName = "Del Sole S.p.a.",

                                             .ContactName = "Alessandro Del Sole"}

 

        Dim Diego As New Customer With {.CustomerID = 2,

                                        .CompanyName = "Cattaruzza S.r.l.",

                                        .ContactName = "Diego Cattaruzza"}

 

        Dim Antonio As New Customer With {.CustomerID = 3,

                                          .CompanyName = "Catucci S.c.a.r.l.",

                                          .ContactName = "Antonio Catucci"}

 

Sfruttando i collection initalizers, posso facilmente definire una collezione di Customer in questo modo:

 

        Dim customersList As New List(Of Customer) From { Alessandro, Diego, Antonio }

 

che poi posso, per esempio, interrogare con LINQ:

 

        Dim query = From cust In customersList

                  Where cust.ContactName.StartsWith("A")

                  Select cust

 

        For Each cust In query

            Console.WriteLine(cust.CompanyName)

        Next

 

Questa interrogazione mi darà come risultato:

 

Antonio Catucci

Alessandro Del Sole

 

A me personalmente piace molto come novità, anche se la mia preferita rimane indiscutibilmente quella delle auto-implemented properties J

 

Vi ricordo che, in attesa della disponibilità della Beta 1, potete sperimentare le novità del linguaggio scaricando la CTP di ottobre 2008 di Visual Studio 2010.

 

Alessandro

Print | posted on lunedì 25 maggio 2009 18:06 | Filed Under [ Visual Basic Visual Studio 2010 ]

Powered by:
Powered By Subtext Powered By ASP.NET