Con "tipo anonimo" si indica la dichiarazione di una struttura personalizzata con una o più proprietà valorizzate, ma in sola lettura, che non necessita la creazione di un tipo custom.
Le proprietà possono essere di tipi differenti tra loro. Questi tipi vengono riconosciuti implicitamente in base ai valori assegnati, come per le variabili implicite. Inoltre il compilatore genera il codice che rappresenta la nostra nuova struttura e lo tiene nascosto, permettendo il corretto funzionamento dell'applicazione.
La sintassi per creare un tipo anonimo è la seguente:
Esempio di tipo anonimo
var person = new { Name = "Peppe", Surname = "Marchi" };
Possiamo richiamare tutte le proprietà della variabile come se fosse un comune tipo custom, in modalità read-only.
Utilizzare un tipo anonimo
var person = new { Name = "Peppe", Surname = "Marchi" };
Console.WriteLine("{0} {1}", person.Name, person.Surname);
I tipi anonimi sono utilizzati per lo più all'interno di query LINQ (subito dopo la clausola "select"), in quanto permettono la creazione di nuovi tipi di strutture per rappresentare le fonti di dati in cui viene effettuata la query.
Esempio di query LINQ
var query = from p in persons select new { p.Name, p.Surname };
foreach (var r in query)
{
Console.WriteLine("{0} {1}", r.Name, r.Surname);
}
Nella query d'esempio, la variabile p viene creata attraverso la tecnica dei tipi anonimi.
Le proprietà auto-implementate permettono allo sviluppatore di creare le proprietà di una particolare classe con i vari accessori get e set, con uno sforzo minimo.
Dichiarazione di proprietà auto-implementate
namespace CSharp3Features
{
public class Author
{
public Author() { }
public Author(int id)
{
ID = id;
}
public int ID { get; private set; }
public string Name { get; set; }
public string Surname { get; set; }
}
}
Questa dichiarazione è ottima per tutte quelle proprietà in cui non sono previste particolari logiche aggiuntive per quanto riguarda gli accessori get e set.
La classe Author descritta sopra prevede così tre proprietà, di cui una, la proprietà ID, segnata come read-only (attraverso la keyword "private"). Tale proprietà può essere comunque valorizzata solamente all'interno di metodi appartenenti alla medesima classe (nel nostro caso all'interno del costruttore). Tentare di valorizzarla altrove porterà ad un errore di compilazione.
Author peppe = new Author(1);
peppe.ID = 2; // porta ad un errore di compilazione
peppe.Name = "Peppe";
peppe.Surname = "Marchi";
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |