[Tutorial] Nuevas Características de C# en .Net 4.0

Iniciado por [D4N93R], 15 Junio 2010, 22:36 PM

0 Miembros y 1 Visitante están viendo este tema.

[D4N93R]

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 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 (csharp) [Seleccionar]
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:

Código (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
private void SetInfo(string name="Juan",
                     string lastName="Andreu",
                     int age=23)
{
   //...
}


Este método podemos llamarlo de la siguiente mánera:

Código (csharp) [Seleccionar]
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

raul338

#1
Lo primero si es nuevo


Pero.... lo de los parametros opcinales no habian sido incuidos en la .net 3.5?? ._. me parecia que si :xD (yo no lo se porque solo programo en 2.0 :P)







EDIT!: Si, leyendo otras cosas me di cuenta de que es asi XD pero ojo!!!

Mira esta entrada de blog que me salto de geeks.ms ..... es muuuy interesante y revela lo oculto del .net 4.0 (que dramatico suena xD)

Parámetros opcionales: úsense con precaución - Variable not found en Geeks.ms

[D4N93R]

Claro Raul, era de suponerse, es la misma práctica de no hardcodear valores que puedan cambiar, como cadenas de conexión, ivas, rutas, etc.

Pero tiene mucho más de positivo que negativo, como la reducción de sobrecargas que son "tontas" por el simple hecho de que al no pasar un valor simplemente lo pasa como 0, o true, o X valor. Para esto ayuda muchísimo.

Pero bueno, para mi el mejor cambio es Dynamic Types, que en realidad si es algo necesario a la hora de desarrollar aplicaciones rápidas (la mayoría lol)

Saludos y gracias por el enlace, que está muy interezante.

raul338

Pero se supone que no tiene que ser asi jeje xD, para eso lo sobrecargo y listo :P afecta solo mi ensamblado

Si...el dynamic es una buena invencion, pero a mi me interesa la programacion paralela :xD

[D4N93R]

Si justo estoy escribiendo sobre eso, pero es muy largo y PLINQ y todo eso.. pero va para unas semanas hahaha