Início > C# > VS 2010 e Framework 4.0 – Usando parâmetros opcionais no C#

VS 2010 e Framework 4.0 – Usando parâmetros opcionais no C#

13 de dezembro de 2009 Deixe um comentário Go to comments

2010 já esta ai, e nada melhor do que começar o ano conhecendo as novas (“que já não são tão novas.. rs) tecnologias, por isso há uns três meses atrás venho estudando as novidades do Visual Studio 2010 e o Framework 4.0 principalmente o que envolve C# 4.0/Asp.Net 4.0 e o MEF (Managed Extensibility Framework). Devido a estes estudos vou começar a escrever alguns artigos sobre o mesmo para compartilhar com vocês, para começar vamos ver uma novidade bacana, trata-se dos parâmetros opcionais na linguagem C# (este era uma vantagem do VB ao C#, principalmente tratando-se de Interop).

Bom, como eu gosto sempre de usar exemplos, imagine a seguinte situação:

Você possui uma classe que executa uma consulta ao banco de uma entidade pessoa, esta consulta pode ser realiza através do Id de Pessoa ou do Nome da Pessoa e Sobrenome de Pessoa.

Uma das formas adotadas para se fazer este era através de sobrecargas de métodos:

    public class PessoaRepository

    {

        public Pessoa BuscarPessoa(int IdPessoa)

        {

            //..

        }

 

        public Pessoa BuscarPessoa(string Nome, string SobreNome)

        {

            //..

        }

    }

               

                Bom agora podem usar outra opção em vez da sobrecarga que é deixar os parâmetros como opcionais, para isso basta colocar um valor default na declaração do parâmetro, veja:

        public Pessoa BuscarPessoa(int IdPessoa = 0, string Nome = "", string SobreNome = "")

        {

 

        }

 

                Se você usar o reflection verá que na no parâmetro ele irá colocar um atributo do tipo: [Optional, DefaultParameterValue(“”)], ou seja caso não seja passado nenhum parâmetro o compiler irá assumir o valor default, veja como seria a chamada do método.

            //Fazendo a chamada passando apenas o Id de Pessoa.

            var chamada1 = new PessoaRepository().BuscarPessoa(1);

            //Fazendo a chamada passando o Id e o Nome de Pessoa.

            var chamada2 = new PessoaRepository().BuscarPessoa(1, "Nelson");

            //Fazendo a chamada passando o Id, Nome e Sobrenome de Pessoa.

            var chamada3 = new PessoaRepository().BuscarPessoa(1, "Nelson", "Borges");

 

            //Fazendo a chamada passando o Nome e Sobrenome de Pessoa.

            var chamada4 = new PessoaRepository().BuscarPessoa(Nome: "Nelson", SobreNome: "Borges");

 

 

Repare que na chamada4 estamos indicando o nome do parâmetro e o valor que ele irá receber,  isso se deve a seqüência dos parâmetros, se você não passar o nome do parâmetro ele irá assumir a ordem dos parâmetros de acordo com a definição na implementação, passando o nome do mesmo (Named Parameters – Parâmetro nomeado) você pode pular esta seqüência. Bem legal essas novas features do C#, é claro que isso não quer dizer que os parâmetros opcionais irão substituir as sobrecargas de métodos, até por que existem várias situações que o mais viável é realmente a sobrecarga, no entanto ele ajuda muito, principalmente na hora de passar aqueles montes de parâmetros para as classes do  Microsoft Office Interop.

 

Bom pessoal, é isso ai e até mais.

 

 

Abraço,

 

Nelson Borges.

Categorias:C#
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: