Entre las nuevas características del .Net Framework 4.0 se encuentran las mejoras añadidas a los lenguajes de .Net, hay otros temas importantes de los que les hablaré en otro post, como lo son Parallel Programming and Debugging, Call Hierarchy of methods, Code Contracts, Web.config transformation, entre otros.
Ahora veamos las mejoras a C#:
Dynamic Types (Tipos dinámicos) and Dynamic Programming (Programación dinámica)
Encontramos ahora una nueva palabra reservada, llamada dynamic. La cual esencialmente permite la comunicación o post enlazamiento de una variable. Veamos como se hace
Supongamos tenemos un método que tiene que retornar una clase dependiendo del valor del parámetro, es decir, no sabemos el tipo de datos de retorno, por lo tanto será object:
public class Product
{
public decimal GetPrice()
{
return 5;
}
}
public class Service
{
public decimal GetPrice()
{
return 9;
}
}
public object RetrieveItem(bool b)
{
if(b)
return new Product();
else
return new Service();
}
Ahora vamos a usar el método:
dynamic item = RetrieveItem(true)
decimal value = item.GetPrice();
Como ven, item es object como todo en .Net, PERO, esta vez es dynamic, por lo que podemos ahora esperar que compile, sabiendo de que item puede ser de varios tipos. Otra forma de solucionar esto sería con clases base o interfaces, pero no siempre son la solución para este tipo de cosas realmente sencillas.
Optional Parameters (Parámetros Opcionales)Muchos programadores de VB.Net saben que esto no es nuevo, pero hasta ahora no había sido aplicado a C#, pero ahora lo tenemos!!
private void SetName(string name="Juan")
{
//...
}
Entonces, si hacemos la llamada al método sin parámetros, no ocurrirá ninún error, puesto que el parámetro es opcional:
SetName();
Ya vemos que es muy sencillo y ahora nos ahorramos todas esas sobrecargas de métodos con diferentes valores para cada una. Implementar parametros opcionales en nuestro código nos puede ayudar mucho a hacer las clases menos complejas y más fáciles de leer.
Named and Optional Arguments (Argumentos opcionales y nombrados)
Bueno se nota á primera vista que ésta funcionalidad está muy relacionada con los parámetros opcionales, y claro que lo está pero ya veremos la diferencia. A el siguiente método solo queremos pasarle los valores de lastName y address, pero no el de firstName:
private void SetInfo(string name="Juan",
string lastName="Andreu",
int age=23)
{
//...
}
Este método podemos llamarlo de la siguiente mánera:
SetInfo(lastName:"Pérez",age:18);
Ésto lo hemos visto antes en los atributos de las clases, pero ahora está disponible para todos los métodos.
Espero les haya gustado,
Gracias por leer!
No hay comentarios:
Publicar un comentario