Le novità di C# 3.0

di: Giuseppe Marchi     30 Gennaio 2008

Il meccanismo è molto simile a quello dei metodi statici, ma che sono applicati non dalla classe in cui sono dichiarati, bensì su un tipo esterno. In altre parole, gli Extension Methods sono particolari tipi di metodi statici da dichiarare all'interno di una o più classi statiche che possono essere richiamati da oggetti del tipo che è stato esteso.

Definizione di un Extension Method

public static <tipo da estendere> <nome del metodo>(this <tipo da estendere> <nome parametro> [, <altri parametri>])

Il tipo scelto, deve essere sia il tipo di ritorno del metodo, sia il tipo del primo parametro. inoltre, sempre il primo parametro del nostro metodo, deve essere marcato con la parola chiave this.

Aggiungere due metodi personalizzati al tipo "int"

namespace CSharp3Features
{
  public static class Extensions
  {
    public static int Increment(this int i) { return ++i; }
    public static int Decrement(this int i) { return --i; }
  }
}

L'esempio definisce una classe statica (la classe Extensions) che contiene due metodi, sempre statici, che svolgono le operazioni di incremento e di decremento su valore intero. Una volta che inserita questa classe nel nostro progetto, possiamo utilizzare entrambi i metodi su qualunque variabile intera.

var count = 10;

while (count != 0)
{
  Console.WriteLine(count);
  count = count.Decrement();
}

Il .NET Framework 3.5 stesso contiene una grossa quantità di estensioni, soprattutto per quanto riguarda l'utilizzo di query LINQ. Inserendo il namespace System.Linq nelle direttive using di una classe, tutti gli oggetti di tipo IEnumerable<T> espongono un set di nuovi metodi, da utilizzare all'interno delle query.

L'intellisense di Visual Studio segnala comunque i metodi estesi marcandoli con la keyword extension prima delle definizione del metodo.

Gli Extension Methods sono veramente una bella novità, di cui però è meglio non abusare. Se, per aggiungere nuove funzionalità a strutture già presenti, possiamo creare delle nuove classi sfruttando il consolidato concetto dell'ereditarietà, è meglio preferire questa via.

Le novità introdotte in C# 3.0 sono veramente tante, ne esamineremo delle altre nella seconda parte dell'articolo.

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