C# - Argumentos nomeados
Neste artigo eu vou falar de um recurso introduzido na versão 4.0 do C#, os argumentos nomeados. |
Para começar vamos definir o que é um parâmetro e o que é um argumento.
Os termos parâmetros e argumentos são frequentemente usados de forma intercambiáveis, embora eles tenham significados inteiramente diferentes.
Quando criamos um método na linguagem C# por padrão a chamada do método deve passar os argumentos respeitando o posicionamento dos parâmetros na lista de parâmetros definidos no método.
Assim para a classe Email o método Enviar() define três parâmetros : destino, titulo e assunto.
public Class Email { public static void Enviar(string destino, string titulo, string assunto ) { Console.WriteLine("{0},{1},{2}", destino, titulo, assunto); } } |
Para chamar o método Enviar passando os argumentos devemos respeitar a ordem dos parâmetros definidos na lista de parâmetros:
Email.Enviar("macoratti@yahoo.com", "Contato", "Gentileza entrar em contato para definir orçamento")
Se não seguirmos essa regra teremos problemas na execução do método com valores trocados ou erro de tipos de dados definidos incorretamente.
Com a introdução dos argumentos nomeados a partir do C# 4.0 podemos
Dessa forma, usando argumentos nomeados, podemos chamar o método Enviar() assim :
Enviar(destino:
"macoratti@yahoo.com", assunto: "Entrar em contato urgente", titulo: "Urgente");Enviar(assunto: "Enviar o rascunho do projeto", titulo: "Enviar rascunho", destino: "macoratti@ig.com.br");
Enviar(titulo: "Ligar urgente", destino: "macoratti@yahoo.com", assunto: "Ligar para o diretor");
Note que estamos nomeando os argumentos identificando-os com os parâmetros definidos e dessa forma podemos usá-los em qualquer ordem na chamada do método visto que eles estão identificados pelo nome.
O método será chamado e executado de forma correta :
using System;
namespace Parametros_Opcionais
Enviar(destino: "macoratti@yahoo.com", assunto: "Entrar emcontato urgente", titulo: "Urgente"); public static void Enviar(string destino, string titulo, string assunto) |
Assim para um método CalculoImposto() definido a seguir com dois parâmetros opcionais :
public static void CalculoImposto(double valor, double taxa = .25, double desconto = 10.00 )
{
Console.WriteLine (valor * taxa - desconto);
}
|
CalculoImposto(100, .35, 20.00);
//chamada normal definindo o valor dos 3 parâmetros CalculoImposto(100); //omitindo o valor dos argumentos para os parâmetros taxa e desconto CalculoImposto(taxa: .45, valor: 200); //trocando a posição dos argumentos taxa e valor e omitindo o desconto CalculoImposto(300, desconto: 25); //omitindo o argumento para taxa e definindo o desconto como 25 |
Note que os argumentos nomeados podem ser especificados em qualquer ordem.
A execução ocorrerá sem problemas como podemos ver :
Dessa forma,
E, estando ele em Jerusalém pela páscoa,
durante a festa, muitos, vendo os sinais que fazia, creram no seu nome.
Mas o mesmo Jesus não confiava neles, porque a todos conhecia;
E não necessitava de que alguém testificasse do homem, porque ele bem sabia o
que havia no homem.
João 2:23-25
Referências: