Metodi di estensione - Cast & As
Scritto da
Marco Amendola il
mercoledì 28 luglio 2010
•
Linguaggio:
• 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