4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Inizializzatori di oggetti e collezioni
Nell'obiettivo di risparmiare tempo nella stesura di codice ripetitivo, in VB 9 possiamo istanziare un tipo valorizzandone le proprietà in modo compatto. Consideriamo per esempio questa classe:
Public Class Product
Private _id As Integer
Private _description As String
Private _price As Decimal
Public Sub New(ByVal id As Integer)
Me._id = id
End Sub
Public ReadOnly Property Id() As Integer
Get
Return Me._id
End Get
End Property
Public Property Description() As String
Get
Return _description
End Get
Set(ByVal value As String)
_description = value
End Set
End Property
Public Property Price() As Decimal
Get
Return _price
End Get
Set(ByVal value As Decimal)
_price = value
End Set
End Property
End ClassPossiamo instanziare la classe Product valorizzando sulla stessa linea, con la parola chiave With, le proprietà. Ecco un esempio:
Dim p As New Product(1) With {.Description = "Descrizione 1", .Price = 100}
Dim p2 As Product = New Product(2) With {.Description = "Descrizione 2", .Price = 100}Istanziamo la classe nel solito modo, eventualmente omettendo le parentesi se non sono previsti parametri al costruttore, facciamo seguire With e tra parentesi graffe la lista di nomi delle proprietà precedute dal punto e separate dalla virgola.
Possiamo inoltre, in modo analogo all'assegnazione degli array, valorizzare da subito le collezioni, senza chiamare molteplici volte il metodo Add che, combinato all'inizializzazione degli oggetti, offre notevoli vantaggi nella stesura del codice:
Dim s As New List(Of String) = { "a", "b" }
Dim list As New List(Of Product) = {New Product(1) With {.Description = "Descrizione 1", .Price = 100}, _
New Product(2) With {.Description = "Descrizione 2", .Price = 100}}Per sfruttare questa caratteristica occorre che il tipo (nell'esempio List(Of T)) implementi almeno IEnumerable e disponga di un metodo visibile Add (non legato a particolari interfacce), poiché il codice autogenerato del compilatore si traduce in chiamate a tale metodo.
Tipi anonimi
Sempre ai fini di velocizzare la stesura del codice e per venire in contro alle necessità di LINQ, possiamo istanziare e far creare automaticamente al compilatore una classe con specifiche proprietà. Ciò lo otteniamo omettendo il nome del tipo che vogliamo instanziare e utilizzando la parola chiave With:
Dim a = New With {.Name = "Christian", .Surname = "Civera"}
a.Name = "Cristian"
' Restituisce { Name = Cristian, Surname = Civera }
Console.WriteLine(a)Nell'esempio precedente, l'uso dei tipi impliciti è obbligatorio visto che non si conosce il nome della classe, ma possiamo comunque lavorare su una classe avente le proprietà in lettura e scrittura Name e Surname con il tipo inferito dalla loro dichiarazione (nell'esempio entrambe stringhe) e con pieno supporto all'intellisense. La classe autogenerata, inoltre, sovrascrive il metodo ToString per stampare tutte le proprietà, sovrascrive GetHashCode e Equals per dare il medesimo risultato in presenza delle proprietà valorizzate in egual modo su istanze diverse e la classe implementa in aggiunta anche l'interfaccia IEquatable(Of T). I tipi anonimi sono di tipo Friend e non differiscono in nessun modo dalle normali classi: le proprietà fanno uso di campi interni per mantenere il valore.
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità

Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
