[Além do blog, eu
também estou agora utilizando o Twitter para atualizações rápidas e para
compartilhar links. Siga-me em: twitter.com/scottgu]
Este é o décimo sétimo de uma série de posts que
estou escrevendo sobre o próximo lançamento do VS 2010 e .NET 4.
O post de
hoje abrange dois novos recursos de linguagem adicionados na C# 4.0 -
parâmetros opcionais e argumentos nomeados - bem como um exemplo legal
para você tirar proveito dos parâmetros opcionais (tanto em VB e C#) com
a ASP.NET MVC 2.
Parâmetros Opcionais na C# 4.0
A
linguagem C# 4.0 agora suporta o uso de parâmetros opcionais com
métodos, construtores e indexadores (nota: VB já suporta parâmetros
opcionais há algum tempo).
Os parâmetros são opcionais quando o valor padrão
é especificado como parte de uma declaração. Por exemplo, o método a seguir recebe dois parâmetros - um
parmâmetro do tipo string chamado "category", e um parâmetro do tipo
int chamado "pageIndex". O parâmetro
"pageIndex" tem um valor padrão igual a 0, e como tal é um parâmetro
opcional:
Ao chamar o método acima
podemos explicitamente passar dois parâmetros para ele:
Ou podemos omitir o
segundo parâmetro opcional - neste caso, o valor padrão 0 será passado
para o método:
Note que a IntelliSense
do VS 2010 indica quando um parâmetro é opcional, assim como o seu valor
padrão quando os valores da IntelliSense são exibidos:
Argumentos Nomeados e Parâmetros Opcionais na C# 4.0
A C# 4.0 agora também
suporta o conceito de "argumentos nomeados". Isto te permite explicitamente nomear um argumento que você
está passando para um método - ao invés de apenas identificá-lo através
da posição do argumento.
Por exemplo, eu poderia escrever o código a
seguir para identificar explicitamente o segundo argumento passado para o
método GetProductsByCategory através do nome (tornando seu uso
um pouco mais explícito):
Argumentos nomeados
podem ser muito úteis quando um método suporta múltiplos parâmetros
opcionais, e você quer especificar quais os argumentos que você está
passando. Por exemplo, a seguir
temos um método DoSomething que usa dois parâmetros opcionais:
Nós poderíamos usar
argumentos nomeados para chamar o método acima com qualquer uma das
seguintes formas:
Em virtude de ambos os
parâmetros serem opcionais, nos casos em que apenas um (ou nenhum)
parâmetro for especificado, o valor padrão para os argumentos não
especificados é passado.
ASP.NET MVC 2 com Parâmetros Opcionais
Um cenário
de utilização legal, onde podemos aproveitar o suporte a parâmetro
opcional nas linguagens VB e C# é com o suporte a entrada de dados da
ASP.NET MVC 2 para métodos de Ação em classes de Controladores.
Por
exemplo, considere um cenário onde queremos mapear URLs como
"Produtos/Navegar/Bebidas" ou "Produtos/Navegar/Sobremesas" em um método
de ação do controlador. Nós
poderíamos fazer isso escrevendo uma regra de roteamento de URL que
mapeia as URLs para um método igual ao mostrado a seguir:
Poderíamos, então,
opcionalmente, usar um valor da querystring chamado "page" para indicar
se os resultados apresentados pelo método Browse (Navegar) devem ser paginados - e
se assim for, qual página do resultado deve ser exibida. Por exemplo: /Produtos/Navegar/Bebidas?page=2
Com a ASP.NET MVC 1, você normalmente trata este
cenário adicionando um parâmetro "page" no método de ação e declara seu
tipo como int anulável (o que significa que será nulo se o
valor "page" da querystring não estiver presente). Você poderia então escrever o código a seguir para converter o int
anulável para um int - e atribuir um valor padrão para o
mesmo caso ele não esteja presente na querystring:
Com a ASP.NET MVC 2, você pode agora tirar proveito do suporte a parâmetro opcional nas
linguagens VB e C# para expressar esse comportamento de forma mais
concisa e clara. Basta declarar o
parâmetro do método de ação como um parâmetro opcional com um valor
padrão:
C#
VB
Se o valor "page"
estiver presente na querystring (por exemplo:
/Produtos/Navegar/Bebidas?page=22),
este será passado para o método de ação como um valor inteiro. Se o valor "page" não estiver presente na
querystring (por exemplo: /Produtos/Navegar/Bebidas), então o valor
padrão 0 será passado para o método de ação. Isso torna o código um pouco mais conciso e legível.
Resumo
Há muitos
ótimos recursos de linguagem que estão chegando com as linguagens C# e
VB no VS 2010. Estes dois recursos
descritos acima (parâmetros opcionais e parâmetros nomeados), são apenas
dois destes recursos. Vou escrever
mais sobre outros recursos nas próximas semanas e meses.
Se você
está procurando um bom livro que resuma todos os recursos da linguagem
C# (incluindo C# 4.0), e que também forneça um bom resumo das partes
centrais do .NET framework, você pode também querer verificar o
recém-lançado livro C#
4.0 in a Nutshell (C# 4.0 em Poucas Palavras) da editora O'Reilly:
Este livro é um trabalho
muito bom que empacota muito conteúdo em um formato fácil para
pesquisar e encontrar exemplos de código.
Espero que ajude,
Scott
Texto traduzido do post original por
Leniel Macaferi.