Le novità di C# 3.0

di: Giuseppe Marchi     30 Gennaio 2008

Inizializzatori di oggetti e collezioni

Gli inizializzatori di oggetti e di collezioni permettono allo sviluppatore di assegnare un particolare valore per ogni proprietà accessibile durante la creazione di una nuova istanza di un oggetto (sia questo un normale oggetto che una collezione) senza dover richiamare il costruttore di default.

Assegnare valori alle proprietà senza passare per il costruttore

Author peppe = new Author { Name = "Peppe", Surname = "Marchi" };

La sintassi che ci permette di valorizzare le proprietà è molto simile a quella utilizzata per i tipi anonimi, con la differenza che qui non usiamo la keyword "var" (che è comunque utilizzabile al posto della dichiarazione del tipo "Author") e possiamo vedere e modificare il codice della classe istanziata.

Allo stesso modo, è possibile creare delle nuove collezioni di oggetti, valorizzandone il contenuto in fase di creazione della nuova istanza.

Assegnare valori agli enumerati

List<int> numeri = new List<int> { 0, 1, 2, 3 };

List<Author> autori = new List<Author> {
  new Author {Name = "Peppe", Surname="Marchi"},
  new Author {Name = "Giuseppe", Surname="Marchi"},
};

Per utilizzare questa tecnica sulle collezioni di oggetti è d'obbligo che queste implementino l'interfaccia IEnumerable. Tramite questa nuova tecnica di inizializzazione, non siamo obbligati a dover richiamare il metodo Add() per ogni nuovo elemento che vogliamo aggiungere alla collezione.

Extension Methods

Gli Extension Methods sono un'importante novità per quanto riguarda la programmazione orientata agli oggetti, in quanto permettono di aggiungere dei metodi personalizzati a tutte le classi dichiarate come "selead", quindi non estendibili.

Nei linguaggi di programmazione ad oggetti, l'ereditarietà risulta uno strumento molto valido, ma spesso anche un'arma a doppio taglio, in quanto può essere difficile sviluppare delle classi da cui ereditare, senza intaccare la logica vera e propria della classe stessa. È per questo motivo che la maggior parte delle classi del .NET Framework sono dichiarate come "selead", così come tutti i tipi primitivi e derivati.

Attraverso l'utilizzo degli Extension Methods però, abbiamo la possibilità di aggiungere delle funzionalità personalizzate a quei tipi di oggetti, senza dover creare delle classi figlie (il che risulta comunque impossibile).

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