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();