Metodi di estensione - Cast & As

Scritto da  Marco Amendola il mercoledì 28 luglio 2010  •  Linguaggio: C#   • Livello: 100


Ho sempre trovato la sintassi del cast in C# piuttosto scomoda, per diversi motivi.

Innanzi tutto la posizione in cui viene indicato il tipo (prima del resto dell'espressione) costringe a pensarci prima di scrivere l'espressione, oppure a tornare indietro successivamente.
Inoltre la presenza delle parentesi rende meno scorrevole la concatenazioni di espressioni dopo l'applicazione del cast:

var myResult = ((ALongTypeName)myInstance).CallAMethod();


L'operatore as ha almeno il vantaggio di avere l'indicazione del tipo dopo l'espressione, ma è comunque scomodo in espressioni composte (*).

Utilizzando questi metodi di estensione:

public static T Cast<T>(this object self)
{
return (T)self;
}
public static T As<T>(this object self) where T : class
{
return self as T;
}

è possibile scrivere espressioni più "fluenti":

var myResult = myInstance.Cast<ALongTypeName>().CallAMethod();
var myResult = myInstance.As<ALongTypeName>();

* L'operatore as ha anche delle importanti differenze semantiche rispetto al cast, che possono essere approfondite in questo articolo.


Tags: extension methods

 
x