C#, Mejoras al lenguaje en Visual Studio 2010.

|

Microsoft anuncia la nueva serie de especificaciones a presentar en Visual Studio 2010 para C# 4.0 lo cual incluye una lista de mejoras en sintaxis orientadas a la invocación dinámica de métodos, parámetros opcionales y mejoras a nivel de compilación para ensamblados que consuman COM y código nativo.

Una de las cosas más notables, es que estos cambios no reflejan un mayor cambio al lenguaje a diferencia de lo ocurrido con versiones anteriores como C# 3.0 al introducir LinQ o C# 2.0 al incorporar Generics, lo cual habla muy bien de la madurez del mismo y la manera en como ha venido evolucionando hasta estabilizarse a lo que veremos en un futuro próximo dentro de Visual Studio 2010.

A continuación algo de sintaxis nueva en C# 4.0

Parámetros Opcionales.
Algo sumamente útil y uno de los cambios más importantes a nivel de economía de sintaxis dado a que reduce significativamente la necesidad del desarrollador de generar sobrecargas no necesarias al momento de presentar un método. A continuación un ejemplo.


public class Person
{
public void SayHi(string text = "Hi There")
{
MessageBox.Show(text);
}
}

...

Person a = new Person();
a.SayHi();
a.SayHi("Hello There");

En el ejemplo anterior, SayHi es un método cuyo único parámetro es opcional, muestra "Hello There" en la segunda invocación y "Hi There" en la primera.

Parametros con Nombre

Dado a que no es posible utilizar comas vacias al invocar un método, ej. Create(1001,,,"001"), es posible invocar cada parámetro en el orden que se desee especificando su nombre.


public class Order
{
public void Create(int number,

string paymentMode = "CR30",
string comments = "No Comments",
string customerCode = "GENERIC")
{
MessageBox.Show(String.Format("Creando la orden {0} \n Modo de Pago: {1}, Cliente:{2} \n{3} ", number, paymentMode, comments, customerCode);
}
}


...

Order order = new Order();
order.Create(1001, customerCode: "001");



Dynamic Binding


Dynamic Binding es una característica nueva del compilador que permite resolver la invocación de métodos solo en tiempo de ejecución, sin validarlos en tiempo de compilación, eso permite la invocación de miembros sin conocer el objeto final. Lo cual es util en COM, lenguajes como IronPython y reduce la necesidad de explicitamente invocar reflection para acceder a un miembro. Adicionalmente si el objeto implementa la interfaz IDynamicObject este puede tomar decisiones referentes a la invocación del nuevo método.


Ejemplo.

dynamic x = new Customer();
x.SayHi();
x.NotImplementedYetMethod();

En el fragmento anterior ambas líneas compilan exitosamente, sin embargo abrá un error en tiempo de ejecución para el segundo método.


Esto, sumado con nuevas mejoras para la integración con código no administrado por lo pronto son los cambios más importantes para la nueva versión de C#. A continuación un link para más información.


http://code.msdn.microsoft.com/csharpfuture

1 comentarios:

Juan Andreu dijo...

Está muy bueno el artículo, y a buena hora que ponen los Parametros con Nombre, porque es prácticamente igual a cuando uno asigna propiedades a los atributos de las clases. y lo de dynamic está pavo!

Publicar un comentario