Nota: Este post ha sido importado de mi blog de geeks.ms. Es posible que algo no se vea del todo "correctamente". En cualquier caso puedes acceder a la versión original aquí
Aunque sería para unos reyes que pasaran más allá del 2010, pero bueno… por pedir que no quede 😛
Estas son las cosas que me gustaría que algun dia se incorporasen a C#. Como son fiestas mágicas, pues aquí van para ver si los chicos de Redmond se animan y para algún milenio las tenemos…
Pongo ideas al margen de si son posibles/factibles con el CLR actual… simplemente son cosas que me gustarían que estuviesen en el lenguaje. Solo pongo las ideas y un ejemplo de lo que me gustaría, sin desarrollarlas a fondo… 🙂
1. Conceptos en genéricos
La idea es poder representar como restricción de un tipo genérico algo más allá que una interfaz. Por ejemplo:
|
|
Este código deberia compilar porque el concepto HasHandle define una propiedad llamada Handle de tipo IntPtr. El mètode genérico Bar
Los conceptos deberían poder ser genéricos a su vez:
|
|
El método Bar<T,U>
debería poder llamarse con cualquier tipo T
que tuviese una propiedad U XXX {get; set;}
Los conceptos deberían poder hacer referencia a la existencia de métodos estáticos:
|
|
El método Bar
2. Constantes binarias
Pues eso mismo…
|
|
Fácil, no??
3. Tipos anónimos que puedan implementar una interfaz
Los tipos anónimos tal y como estan ahora sirven para poco más que para LINQ. Sería interesante que pudiesen implementar una interfaz y que pudiesen ser devueltos a través de referencias a dicha interfaz:
|
|
El tipo anónimo creado en el método Baz, implementa la interfaz ISomeInterface y es devuelto a través de una referencia a dicha interfaz.
4. Referencias const
Al estilo de C++. Mira que esto es simple y útil y no se porque no lo han metido… Para más info: http://www.cprogramming.com/tutorial/const_correctness.html.
5. Enumeraciones con cualquier tipo
Estaría bien que los enums pudieran tener cualquier tipo base:
|
|
El enum SistemaSolar se define como una enumeración de objetos de la clase Planeta.
El método Foo.Baz acepta como parámetro sólo SistemaSolar.Mercurio o SistemaSolar.Tierra. Pasarle cualquier otro objeto Planeta no debería compilar.
Felices fiestaaaaaaaaaaaaaaaaaaaaaaas!
Bueno… paro ya de pedir cosas, jejeeee… 🙂
Solo desearos a todos los geeks unas felices fiestas, llenas de alegría, familia, ceros y unos…
… y que el tió os cague muchos regaloooooooooooooooooooooooooooooooos!!!!