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 essencialmente 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á objet:
Código
public class Product { public decimal GetPrice() { return 5; } } public class Service { public decimal GetPrice() { return 9; } }public object RetrieveItem(bool b) { if(b) else }
Ahora vamos a usar el método:
Código
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!!
Código
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:
Código
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:
Código
private void SetInfo(string name="Juan", string lastName="Andreu", int age=23) { //... }
Este método podemos llamarlo de la siguiente mánera:
Código
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