1
resposta

[Projeto] Exercicio 04 - Sistema de Login

Ficou faltando esse codigo (estourou os 5k caracteres...)

Se alguem conhecer uma forma melhor otimizada em vez de if/else para verificar a chave-valor, aceito dicas.

P.S: por se tratar de um sistema de login, acredito que seria melhor nao permitir ignorar o sensitive case. Mas se fosse o caso poderia usar: string.Equals() Console.ReadLine()!.ToLower

Se souberem de outras formas, agradeco!

// Exercicio 04 - Sistema de Login

Dictionary<string, string> sistemaLogin = new Dictionary<string, string>();
sistemaLogin.Add("Victor", "admin");
sistemaLogin.Add("ADM", "admin123");

Console.WriteLine("Login: ");
string userName = Console.ReadLine()!;

Console.WriteLine("Senha: ");
string userPw = Console.ReadLine()!;

if(sistemaLogin.ContainsKey(userName) && sistemaLogin[userName] == userPw)
{
        Console.WriteLine("Acesso permitido");
}
else
{
    Console.WriteLine("Usuário ou senha incorretos");
}
1 resposta

Olá, Victor. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você estruturou o dicionário para armazenar os logins. Para otimizar a verificação sem usar if/else, você pode utilizar TryGetValue, que já retorna a senha associada a uma chave, evitando a necessidade de acessar o dicionário duas vezes.

Veja este exemplo:

  
Console.WriteLine("Login: ");  
string userName = Console.ReadLine()!;  

Console.WriteLine("Senha: ");  
string userPw = Console.ReadLine()!;  

if (sistemaLogin.TryGetValue(userName, out string? senha) && senha == userPw)  
{  
    Console.WriteLine("Acesso permitido");  
}  
else  
{  
    Console.WriteLine("Usuário ou senha incorretos");  
}  

TryGetValue busca a senha associada ao login e retorna true se a chave existir. Assim, eliminamos um acesso desnecessário ao dicionário.

  Alura   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!