Olá Marcelo
Nesse exercício precisamos recriar o array quando ele fica cheio. Para isso, dentro do método AdicionaConta
, sabemos que o array está cheio quando a quantidadeDeContas
é igual ao tamanho do array:
if(quantidadeDeContas == contas.Length)
{
// precisamos dar um jeito de fazer o array crescer...
}
Dentro do if
precisamos aumentar a capacidade do array, mas como o array possui um tamanho imutável, precisamos criar um novo array com uma capacidade maior do que a antiga, o dobro da capacidade, por exemplo:
if(quantidadeDeContas == contas.Length)
{
new Conta[contas.Length * 2];
}
Porém não podemos guardar esse novo array diretamente no atributo contas
pois com isso perderemos as contas que já foram cadastradas.
if(quantidadeDeContas == contas.Length)
{
Conta[] temporario = new Conta[contas.Length * 2];
}
Agora precisamos copiar o conteúdo do array antigo para o array novo:
if(quantidadeDeContas == contas.Length)
{
Conta[] temporario = new Conta[contas.Length * 2];
for(int i = 0; i < this.contas.Length; i++)
{
temporario[i] = this.contas[i];
}
}
E agora sim podemos colocar o novo array no atributo contas
:
this.contas = temporario;
Depois disso, o resto do código fica igual ao que você postou. O código final do método fica da seguinte forma:
public void AdicionaConta(Conta conta)
{
if(quantidadeDeContas == contas.Length)
{
Conta[] temporario = new Conta[contas.Length * 2];
for(int i = 0; i < this.contas.Length; i++)
{
temporario[i] = this.contas[i];
}
this.contas = temporario;
}
this.contas[this.quantidadeDeContas] = conta;
this.quantidadeDeContas++;
comboContas.Items.Add(conta);
}