Parâmetros opcionais e nomeados do C#

Parâmetros opcionais e nomeados do C#
victor.harada
victor.harada

Compartilhe

CSharp-Blood
 public class Produto { public String Descricao { get; set; } public String Nome { get; set; } public Decimal Preco { get; set; } public int Quantidade { get; set; } public String Fornecedor { get; set; } } 

Para obrigar o preenchimento de todos os campos do produto, podemos criar um construtor que recebe essas informações:

 public Produto (String descricao, String nome, Decimal preco, int quantidade, String fornecedor) { this.Descricao = descricao; this.Nome = nome; this.Preco = preco; this.Quantidade = quantidade; this.Fornecedor = fornecedor; } 
Banner da Escola de Inovação e Gestão: Matricula-se na escola de Inovação e Gestão. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

Mas algumas vezes não sabemos todas as informações necessárias para o cadastro do produto, nesses casos, queremos utilizar valores padrões para os campos:

 new Produto("sem descrição", "sem nome", 0.0m, 0, "sem fornecedor"); 

O problema dessa abordagem é que teríamos que utilizar consistentemente esses valores padrão em todos os pontos do sistema. Nessa situação, podemos utilizar os parâmetros opcionais do C#.

Para definirmos um valor opcional no construtor, precisamos declarar o parâmetro e atribuir qual será o valor padrão:

 public Produto (String descricao = "sem descrição", String nome = "sem nome", Decimal preco = 0.0m, int quantidade = 0, String fornecedor = "sem fornecedor") { this.Descricao = descricao; this.Nome = nome; this.Preco = preco; this.Quantidade = quantidade; this.Fornecedor = fornecedor; } 

Com isso, ao executarmos o código:

 Produto p = new Produto(); 

Teremos um na variável p um produto preenchido com todos os valores padrão que foram definidos na declaração do construtor. Além disso, podemos definir, por exemplo, o nome e a descrição simplesmente enviando essas informações como parâmetros:

 // sobrescreve apenas o nome e a descrição Produto p = new Produto ("Apostila do curso de C# da Caelum", "Apostila de C#"); 

Mas e se tivermos apenas o nome do produto? Como o primeiro argumento do construtor é a descrição, temos de fornecer a descrição para só depois passar o nome. Nessa situação, gostaríamos de chamar o construtor falando que o parâmetro passado representa o nome do produto, para isso, utilizamos os parâmetros nomeados do C#.

Quando queremos utilizar um parâmetro nomeado, precisamos falar o nome do parâmetro seguido de ':' e depois o valor que será colocado no parâmetro, no exemplo, poderíamos chamar o construtor do produto da seguinte forma:

 Produto p = new Produto(nome: "Apostila de C#"); 

Com esse código, construímos um produto definindo apenas o nome, as outras informações ainda estão com os valores padrão definidos no código do construtor.

Para mais informações sobre os argumentos nomeados e opcionais, consulte o guia de programação da msdn. Conheça também os cursos de .NET da Caelum!

Veja outros artigos sobre Inovação & Gestão