martes, 15 de junio de 2010

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

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!

sábado, 12 de junio de 2010

[Enlace] Diferencias de sintaxis entre VB y C#

Hola,

Como no uso para nada VB.Net estaba buscando el modificador de acceso internal ,por lo que encontré esta página donde sale un listado de muchas diferencias y equivalencias.

Se puede notar también que VB.Net es más fácil de leer ya que es más hacia un lenguaje humano, pero C# a su vez tiene una sintaxis más limpia y pulida.

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Gracias por leer!

lunes, 7 de junio de 2010

Pruebas de Standards de Microsoft's IE9 vs. Realidad

ie9-standards Todos hemos visto la noticia en donde Microsoft Internet Explorer 9 Soportaba más estándares que sus rivales:

http://img707.imageshack.us/img707/8936/ie9tests.png

Pues, esos resultados son basados en 31 pruebas, todas hechas por Microsoft, tomando en cuenta que la prueba "SVG 1.1 Tiny" tiene más de 150 tests diferentes.

Acá pueden ver los resultados reales:

http://www.codedread.com/svg-support.php

Como pueden ver, IE9 apenas pasa algunas pruebas, por lo que microsoft quiso dar la impresión de que si lo hacía. En realidad es genial de que IE ahora soporte SVG pero no de esta manera.

Aprovechando el momento les cuento que safari anda por el mismo camino.Al intentar ver las pruebas de HTML5 de safari, te aparece un mensaje diciendo que tienes que tener Safari para poder verlo. Pueden verlo en ésta página:

http://i.imgur.com/cT08B.png

Dando a entender que solo safari puede ver esas pruebas.