1
resposta

[Projeto] Agenda de controle de contatos duplicadas

Nesse projeto aprendi um pouco sobre readonly, que é modificador de campo (atributo) e Indica que o valor do campo só pode ser atribuído:

  • No momento da declaração.
  • Dentro do construtor da classe.

Depois disso, o valor não pode mais ser alterado.

Ou seja: readonly garante que o campo não será modificado após a criação do objeto, mas ainda permite inicialização dinâmica no construtor.

Projeto: Agenda de controle de contatos duplicadas:

Contato.cs

public class Contato
{
    public string Nome { get; set; }
    public string NumTelefone { get; set; }

    public Contato(string nome, string telefone)
    {
        this.Nome = nome;
        this.NumTelefone = telefone;
    }
}

Agenda.cs

public class Agenda
{
    public string Proprietario { get; set; }
    private readonly List<Contato> contatos;

    public Agenda(string proprietario)
    {
        this.Proprietario = proprietario;
        this.contatos = new List<Contato>();
    }

    public bool AdicionarContato(Contato contato)
    {
        if (contatos.Any(c => c.Nome == contato.Nome))
        {
            Console.WriteLine("Contato com esse nome já está na agenda.");
            return false;
        }
        contatos.Add(contato);
        return true;
    }

    public void ListarContatos()
    {
        Console.WriteLine("Agenda de: " + Proprietario);
        Console.WriteLine("Contatos:");
        foreach (var c in contatos)
        {
            Console.WriteLine("- " + c.Nome + " | " + c.NumTelefone);
        }
        Console.WriteLine("Total de contatos: " + QuantidadeDeContatos);
    }

    public int QuantidadeDeContatos 
    {
        get { return contatos.Count; }
    }
}

Program.cs

Agenda agenda = new Agenda("Matheus Oliveira");
agenda.AdicionarContato(new Contato("Otavio Silva", "15998635278"));
agenda.AdicionarContato(new Contato("Otavio Silva", "15998635278"));
agenda.AdicionarContato(new Contato("João", "18775635241"));
agenda.ListarContatos();
1 resposta

Oi Matheus, tudo bem?

Sensacional o seu resumo sobre o readonly! Você pegou perfeitamente a essência desse modificador.

O seu código do projeto da Agenda ficou excelente, muito bem estruturado e legível.

Bons estudos!

Sucesso

Imagem da comunidade