RSS feed
Parâmetros Opcionais e Argumentos Nomeados na C# 4 (e um cenário legal com a ASP.NET MVC 2) - ScottGu's Blog em Português

Parâmetros Opcionais e Argumentos Nomeados na C# 4 (e um cenário legal com a ASP.NET MVC 2)


[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:

imagem

Ao chamar o método acima podemos explicitamente passar dois parâmetros para ele:

imagem

Ou podemos omitir o segundo parâmetro opcional - neste caso, o valor padrão 0 será passado para o método:

imagem 

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:

imagem

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):

imagem

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:

imagem

Nós poderíamos usar argumentos nomeados para chamar o método acima com qualquer uma das seguintes formas:

imagem

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:

imagem

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:

imagem

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#

imagem

VB

imagem

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:

imagem

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.

Published Friday, April 02, 2010 3:28 AM by Leniel Macaferi
Filed under: , , ,

Comments

# Série de posts sobre Visual Studio 2010 e .NET 4 - ScottGu's Blog em Portugu??s

Pingback from  Série de posts sobre Visual Studio 2010 e .NET 4 - ScottGu's Blog em Portugu??s

# re: Parâmetros Opcionais e Argumentos Nomeados na C# 4 (e um cenário legal com a ASP.NET MVC 2)

Wednesday, April 28, 2010 7:14 AM by Átila

Muito bom! Gosto de soluções como esta, onde um método se comporta de forma dinâmica e com uma lógica limpa!

# Apresentando o "Razor" - um novo motor de visões para a ASP.NET

Thursday, October 28, 2010 3:33 PM by ScottGu's Blog em Português

Uma das coisas em que minha equipe tem trabalhado tem sido uma nova opção de motor de visões para a ASP

# Apresentando o "Razor" - um novo motor de visões para a ASP.NET

Thursday, October 28, 2010 3:38 PM by ScottGu's Blog em Português

Uma das coisas em que minha equipe tem trabalhado tem sido uma nova opção de motor de visões para a ASP

# re: Parâmetros Opcionais e Argumentos Nomeados na C# 4 (e um cenário legal com a ASP.NET MVC 2)

Wednesday, May 04, 2011 5:49 PM by Fabio Oliveira

Parabéns pelo ótimo post.

Sinceramente de grande valia.

Leave a Comment

(required) 
(required) 
(optional)
(required)