All These Things That I've Done

Apply the programming model to everyday programming problems
posts - 83, comments - 71, trackbacks - 4

My Links

News


View Gianluca Carucci's profile on LinkedIn

Tag Cloud

Archives

Post Categories

Image Galleries

Blogs

Links

Generics e alias

In c++, quando utilizziamo un template (prendiamo ad esempio il tipo std::vector), è pratica abbastanza diffusa definire un nuovo tipo del template specializzato.

Qualcosa di questo tipo per intenderci:

typedef std::vector  IntVector;

Come sappiamo  usare un template (o un tipo generico del framework) allunga incredibilmente il nome del tipo e risulta molto scomodo dover ripetere lo stesso nome per intero ad ogni cast, istanziazione etc etc. Esiste qualcosa di simile al tipedef anche in C#? La risposta è si, ma tenendo ben presente l'aggettivo SIMILE. In C# possiamo definire un alias utilizzando la key using. La "dichiarazione duale del tipo IntVector di c++, in c# sarebbe:

using IntList = System.Collection.Generic.List;

Leggere attentamente le avvertenze: lo statement using, come avviene con i namespace, definisce solo un alias, non esiste un vero e proprio equivalente del typedef del c++. Questo è supportato dal fatto che, una volta compilato il codice, nel nostro assembly non esisterà nessun metadata che fa riferimento al tipo IntList. Se proprio vogliamo definire un tipo specializzato del generic dobbiamo creare una classe che eredita dalla versione specializzata del tipo generico(magari può essere utile un codesnippet per questo).

Technorati tags: , , ,

Print | posted on venerdì 23 dicembre 2005 13:41 | Filed Under [ C++ C# ]

Powered by:
Powered By Subtext Powered By ASP.NET