Tipi anonimi in Visual Basic
Il linguaggio Visual Basic mi permette di definire dei tipi di di dati anonimi (anonymous type). Sono detti "anonimi" perché non hanno un nome identificativo dichiarato esplicitamente.
Il nome del tipo di dati è generato automaticamente dal compilatore. Lo sviluppatore non lo conosce.
Come funziona
Il compilatore riconosce il tipo di dato per inferenza (type inference) in base ai valori che assegno all'oggetto.
A cosa serve
Mi permette di definire le variabili e gli oggetti in modo più sintetico e con meno righe di codice.
Tuttavia, rende il codice sorgente del programma meno leggibile a colpo d'occhio.
Come creare un tipo di dato anonimo
Nella dichiarazione di una variabile o di un oggetto enumerabile (es. array) utilizzo la funzione With per aggiungere dei campi (proprietà) e i rispettivi valori.
Esempio
Dichiaro una variabile composta con la funzione With.
Dim data = New With { .giorno=27, .mese="febbraio", .anno="2020" }
Il compilatore rileva tre proprietà:
.giorno
.mese
.anno
Alle proprietà .giorno e .anno ho assegnato un numero intero (27 e 2020). Quindi, il compilatore gli associa automaticamente per inferenza un tipo di dato numerico intero (Int).
Alla proprietà .mese, invece, ho assegnato un valore alfanumerico ("febbraio"). In questo caso il compilatore gli associa automaticamente il tipo di dato stringa (String).
Grazie a questa tecnica non ho dovuto predefinire né il nome, né il tipo di dato delle singole proprietà.
Nelle successive assegnazioni dei valori alla variabile devo però ricordami di rispettare l'odine dei campi e il tipo di dato di ogni campo.
data = New With {.giorno=30, .mese="marzo", .anno=2020}
Se usassi un ordine diverso di presentazione o altri tipi di dati, il compilatore produrrebbe un errore.
In alternativa, posso anche cambiare i valori delle singole proprietà.
data.mese="marzo"
In questo caso è importante soltanto rispettare il tipo di dato di ogni singola proprietà. L'ordine delle proprietà non ha importanza.
E così via.