Le novità di C# 3.0

di: Giuseppe Marchi     30 Gennaio 2008

Tipi anonimi

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.

Proprietà auto-implementate

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";

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto