Translate

domingo, 25 de novembro de 2012

Parâmetros Opcionais

A partir do .NET 4.0 é possível, em C#, criar métodos que podem receber argumentos opcionais. Esta técnica permite ao chamador invocar um método omitindo argumentos julgados desnecessários, desde que o chamador não se importe com os valores default dos parâmetros ignorados.
Por exemplo, suponha que você tenha um método usado para autenticar os usuários em seu website, e que este método defina um parâmetro opcional para informar se o usuário deseja ou não que seus dados de acesso fiquem gravados no browser:


// Tenta logar um usuário no sistema.
static bool LogarUsuario(string login, string senha,  
                                bool salvarSenha = false)
{
  // Algum método definido para realizar a autenticação
  // dos usuários.
  if (Servidor.AutenticarUsuario(login, senha))
  {
    // Verifica se o usuário deseja que sua senha fique salva
    // no browser.
    if (salvarSenha)
    {
      // Salva os dados de acesso do usuário.
      Servidor.ManterUsuarioLogado();
    }

    // O usuário foi autenticado com sucesso.
    return true;
  }
  else
  {
    // O login ou senha do usuário é inválido.
    return false;
  }
}

No método LogarUsuario() o último parâmetro recebe um valor default false através de uma atribuição feita dentro da definição de parâmetros. Dessa forma, nós podemos chamar LogarUsuario() de duas formas:


bool isUsuarioAutenticado = LogarUsuario("João", "*****");
bool isUsuarioAutenticado = LogarUsuario("João", "*****", true);

Como a primeira chamada ao método não especificou nenhum valor para o terceiro parâmetro ele será passado com o valor default definido na declaração do método, neste caso false, significando portanto que o usuário deverá informar o login e senha novamente caso ele saia do site e volte depois. Já a segunda chamada ao método especifica os valores de todos os parâmetros, e portanto o valor default do parâmetro opcional será  ignorado e substituído pelo valor fornecido pelo chamador, neste caso true, o que fará com que o sistema mantenha o usuário autenticado mesmo se ele sair do site e retornar novamente.


  

Nenhum comentário:

Postar um comentário