Casino online









Mercato forex







Appunti



Inferenza di tipo
Come diverse volte ho spiegato e ripetuto nella mia guida, scrivere una dichiarazione di variabile senza la specificazione del tipo costituisce uno spreco di tempo e di spazio in memoria, a causa delle ormai famose operazioni di boxing e unboxing. In Visual Basic 2008, invece, questo problema può essere evitato usando l'Inferenza di tipo, un meccanismo che permette al Framework di determinare a run-time il tipo di un oggetto di cui si sia specificato il valore. Ad esempio, questo codice, nella versione 2005:
Dim X = 27
avrebbe provocato la creazione di una variabile Object X e l'assegnazione a questa del valore Integer 27. Tale procedimento viene sostituito con il sopracitato meccanismo, che traduce X nel suo vero tipo. È possibile disattivare questa funzionalità come si faceva con le Option nei Visual Basic precedenti. La sua sintassi è:
Option Infer [On/Off]


Inizializzatori di oggetti
Quando ho parlato degli attributi, ho detto che le loro proprietà non Read-Only possono essere impostate nel costruttore con lo speciale operatore di assegnazione :=, il che è molto comodo. Permette infatti di non definire molteplici costruttori mediante overloading. Lo stesso principio, in VB2008, è stato applicato anche a tutti gli oggetti, introducendo un nuovo utilizzo della keyword With. Ecco come si sarebbe presentato un codice VB2005 nel tentativo di inizializzare i campi pubblici di un ipotetico oggetto Person:
Dim P As New Person
With P
    .FirstName = "Pinco"
    .LastName = "Pallino"
    .BirthDay = Date.Parse("27/2/1978")
End With
Ed ecco come diventa con l'inizializzatore di oggetto:
Dim P As New Person With {.FirstName = "Pinco", _
    .LastName = "Pallino", Date.Parse("27/2/1978")
Strettamente legati a questo nuovo costrutto sono i Tipi anonimi.


Tipi Anonimi
Allo stesso modo degli inizializzatori, che possono creare oggetti esistenti impostandone le proprietà, i tipi anonimi sono in grado di creare nuovi tipi "impliciti" sul momento, che godano delle proprietà impostate. Ad esempio:
Dim P As New With {.FirstName = "Mario", .LastName = "Rossi", _ 
    .BirthDate = New Date(1980, 10, 10)}
Questo codice crea una variabile P con le suddette proprietà, con i valori già impostati: se nella versione 2005 questa sarebbe considerata (il verbo è giusto, non vi preoccupate!) di tipo Object, in Visual Basic 2008 viene invece interpretata come un tipo a sé stante, con determinati campi. Tali tipologie di variabili possono essere confrontate con l'operatore = solo se viene specificata quale delle proprietà impostate debba essere sottoposta alla comparazione. Per far ciò ci si serve della nuova parola riservata Key:
Dim A As New With {Key .Campo1 = 80, .Campo2 = 90}
Dim B As New With {Key .Campo1 = 80, .Campo2 = 100}

Console.WriteLine(A = B)
Questo codice produce l'output "True" a schermo: infatti i due oggetti A e B vengono confrontati semplicemente eseguendo un controllo su Campo1, che in entrambi i casi viene specificato come chiave dell'oggetto.




 

The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.