Parâmetros opcionais e nomeados do C#

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

Compartilhe

CSharp-BloodQuando estamos desenvolvendo uma aplicação muitas vezes precisamos passar diversos argumentos para um construtor ou método de uma classe. Em uma loja, por exemplo, gostaríamos de cadastrar um novo produto que terá as propriedades descrição, preço, nome, quantidade em estoque e fornecedor, para representar esse produto teríamos a seguinte classe:

 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; } 

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