3 de octubre de 2009

C# 4 Parámetros Opcionales

Visual Studio 2010 En este espacio estaremos incluyendo algunas de las nuevas características incluidas en C# 4. Hoy en particular veremos una que especialmente me gusta mucho, me refiero a parámetros opcionales.

Parámetros Opcionales

Es un hecho irrefutable que los parámetros opcionales nos garantizan una comodidad y economía de código significativa, pero veamos un ejemplo para entenderlo.

Hasta la versión de C# 3, cuando queríamos definir un método con varios parámetros opcionales, implementábamos varias sobrecargas del mismo. Por ejemplo, imaginemos que necesitamos definir un método Sumar con hasta 4 parámetros, veamos como hacerlo:

C# 3 y versiones anteriores

int Sumar() { return Sumar(0, 0, 0, 0); }

int Sumar(int a) { return Sumar(a, 0, 0, 0); }

int Sumar(int a, int b) { return Sumar(a, b, 0, 0); }

int Sumar(int a, int b, int c) { return Sumar(a, b, c, 0); }

int Sumar(int a, int b, int c, int d) { return a + b + c + d; }

C# 4

int Sumar(int a = 0, int b = 0, int c = 0, int d = 0) { return a + b + c + d; }

Como hemos visto, resolver la misma situación en C# 4 es mucho mas cómodo y práctico. Pero la cosa no se queda aquí, contamos con otras facilidades, por ejemplo:

int x = Util.Sumar();

int y = Util.Sumar(4, 3);

int z = Util.Sumar(b: 5, c: 7);

Según vemos en las líneas anteriores, las 2 primeras ya eran obvias, pero con la tercera, vemos un caso nuevo, algo que anteriormente era imposible resolver; resulta que podemos pasar parámetros que no sean ni consecutivos, ni que sean los primeros del método.

Como vemos esta es una interesante nueva característica incluida en C# 4, pero no es la única, seguiremos otras inclusiones en artículos posteriores.

Artículos Relacionados:

1 comentario:

  1. Excelente artículo... Pero tengo una pregunta...
    En un servicio de RIA tengo un servicio de la siguiente forma
    Estudiante(int Posicion, bool? cargartablAdicional = true){
    if (cargartablaAdicional??true)...
    sin embargo, cuando utilizo el query sin el parámetro me indica que siempre lo ocupa...
    Será que mediante no puede haber un servicio de ría services que utilice un parámetro opcional?

    ResponderEliminar