I Tipi Anonimi, introdotti principalmente per essere utilizzati nelle Query Expression, sono dei tipi senza nome che si possiamo utilizzare come dei normali Oggetti.
Riprendendo l'esempio del Post precedente(VB 9.0 - Object Initializer), potremmo creare l'oggetto Veicolo in questo Modo :
Dim veicolo = New With {.Marca = "FIAT", _
.Modello = "Punto"}
Non abbiamo dunque specificato il nome ed il tipo della variabile Veicolo, che VS determina per inferenza.
E' anche possibile eseguire dei confronti tra tipi Anonimi tramite il metodo Equals().
I confronti sono validi sono se vengono dichiarate delle Chiave Key per una o più proprietà. Infatti il confronto avviene esclusivamente tra le proprietà dichiarate come chiave e quindi ReadOnly
Dim veicolo = New With {Key .Marca = "FIAT", _
.Modello = "Punto"}
Dim veicolo2 = New With {Marca = "FIAT", _
.Modello = "Punto"}
Dim confronto = veicolo.equals(veicolo2)
Questo confronto avrà esisto negativo poichè la variabile Veicolo2 non ha nessuna chiave assegnata, mentre :
Dim veicolo = New With {Key .Marca = "FIAT", _
.Modello = "Punto"}
Dim veicolo2 = New With {Key Marca = "FIAT", _
.Modello = "Punto"}
Dim confronto = veicolo.equals(veicolo2)
Questo confronto avrà esisto positivo.
La visibilità di questi tipi Anonimi è locale alla funzione in cui sono definiti. A mio parere i tipi anonimi vanno bene per LINQ, ma tipicamente dichiarate la tipologia dell'oggetto che istanziate.
Stay Tuned !!