Parámetros opcionales y argumentos nominados en C# 4 (y un escenario w/ASP.NET MVC2)

[Además del blog podéis seguir a Scott en  twitter.com/scottgu]

Este es el decimo séptimo post sobre una serie de VS 2010 y .NET 4.

En el post de hoy veremos dos de las nuevas características del lenguaje que se han añadido a C# 4 – los parámetros opcionales y los argumentos nominados – así como una forma interesante de aprovechar los parámetros opcionales (tanto en VB como en C#) con ASP.NET MVC 2.

Parámetros opcionales en C# 4.0

C# 4.0 ahora soporta el uso de parámetros opcionales en métodos, constructores e indizadores (nota: VB ha soportado esto desde hace tiempo).

Los parámetros son opcionales cuando se indica un valor por defecto como parte de la declaración. Por ejemplo, el método siguiente recibe dos parámetros – un string “category” y un entero “pageIndex”. El parámetro “pageIndex” tiene un valor por defecto de 0, y como tal es un parámetro opcional:

Cuando llamamos a este método podemos pasarle dos parámetros:

O podemos no pasar el segundo parámetro – en ese caso se pasará por defecto el valor 0:

Fijaós que el intellisense de VS 2010 indica cuándo un parámetro es opcional, así como el valor por defecto con el que se inicializará:

Argumentos nominados y parámetros opcionales en C# 4

C# 4 también soporta el concepto de “argumentos nominados”. Esto nos permita indicar explícitamente el nombre del parámetro que le estamos pasando al método – en lugar de tan sólo identificarlo por la posición del parámetro.

Por ejemplo, podría haber llamado a la función anterior identificando explícitamente el segundo parametro que le estamos paswando al método GetProductsByCategory por el nombre (haciendo su uso un poco más explícito):

Los argumentos nominados son muy útiles cuando un método tiene varios parámetros opcionales, y queremos especificar qué argumentos le estamos pasando. Por ejemplo, el método DoSomething que recibe dos parámetros opcionales:

Podemos usar los argumentos nominados para llamar al método anterior de un montón de formas:

Como ambos parámetros son opcionales, en el caso en el sólo se indique un parámetro (o ninguno) se pasará el valor por defecto de los parámetros.

ASP.NET MVC 2 y los parámetros opcionales.

Un escenario interesante en el que podemos aprovechar el uso de parámetros opcionales soportados tanto en VB como en C# es con el soporte de binding de entrada de ASP.NET MVC 2 de los métodos de acción y de las clases controladoras.

Por ejemplo, imaginemos que queremos mapear las URLs del estilo “Products/Browse/Beverages” o “Products/browse/Deserts” a un método de acción. Podríamos hacer esto escribiendo una regla de routing URL que mapee las URLs a un método de la siguiente manera:

Ahora podríamos usar el valor “page” para indicar o no los resultados del método Browse para que sean paginados – y si lo son, qué página de resultado queremos mostrar. Por ejemplo:/Products/Browse/Beverages?page=2.

En ASP.NET MVC 1 resolvíamos esto añadiendo un parámetro “page” al método de acción y declararlo como un int nullable (lo que significa que será null si el valor “page” del querystring no está presente). Podríamos escribir el siguiente códidog para convertir el nullable int a int – y asignarle un valor por defecto si no está en el querystring:

Con ASP.NET MVC 2 podemos aprovechar el soporte de parámetros opcionales de VB y C# para expresar este comportamiento más concisamente y claramente. Simplemente declaramos el método de acción con un parámetro opcional con un valor por defecto:

C#:

VB

Si el valor “page” está en el query string (ej: /Products/Browse/Beverages?page=22) se le pasará al método de acción como un entero. Si no está en el query string (ej: /Products/Browse/Beverages) se le pasará el valor 0 al método de acción. Esto hace el código un poco más conciso y leible.

Resúmen

Hay un montón de nuevas características en C# y VB con VS 2010. Las anteriores dos características (parámetros opcionales y parámetros nominados) son dos de ellos. Postearé sobre algunos de ellos en las próximas semanas.

Si estáis buscando un buen libro que resuma todas las caracteríscitas de C# (incluso las de C# 4) y que ofrezca un resumen de las clases básicas de .NET, quizás os podría interesar el libro  C# 4.0 in a Nutshell  de O’Reilly:

image 

Ha hecho un gran trabajo a seleccionando el contenido con una forma fácil de encontrar ejemplos .

Espero que sirva.

Scott.

Traducido por: Juan María Laó Ramos.

Artículo original.

0 comentarios sobre “Parámetros opcionales y argumentos nominados en C# 4 (y un escenario w/ASP.NET MVC2)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *