Oi pessoal! Quando o professor Guilherme identificou que o código teria que percorrer a Array toda toda vez que fosse aumentar o tamanho, eu intervi e resolvi sem os argumentos opcionais e sobrecargas:
private void VerificarCapacidade(int tamanhoNecessario)
{
if (_itens.Length >= tamanhoNecessario)
{
return; //nao faz nada
}
Console.WriteLine("Aumentando capacidade da lista");
ContaCorrente[] novoArray = new ContaCorrente[tamanhoNecessario];
for (int indice = _itens.Length; indice < _itens.Length; indice++)
{
novoArray[indice] = _itens[indice];
Console.WriteLine(".");
}
_itens = novoArray; // a referência aponta para o novoArray.
}
}
Dentro do for, troquei a condição do indice para "int indice = _itens.Length", assim quando receber a array, receberá ela com o tamanho atual, menor do que o tamanho necessário, mas a diferença sempre será de um.
Assim quando o método Adicionar for chamado e estourar o tamanho da array, ela compila e cria diretamente um espaço a mais na novaArray:
Código inteiro do ListaDeContaCorrente.cs:
using ByteBank.Modelos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ByteBank.SistemaAgencia
{
public class ListaDeContaCorrente
{
private ContaCorrente[] _itens;
private int _proximaPosicao;
public ListaDeContaCorrente()
{
_itens = new ContaCorrente[5];
_proximaPosicao = 0; // só pra deixar claro.
}
public void Adicionar(ContaCorrente item)
{
VerificarCapacidade(_proximaPosicao + 1);
Console.WriteLine($"Adicionando item na posição {_proximaPosicao}");
_itens[_proximaPosicao] = item;
_proximaPosicao++;
}
private void VerificarCapacidade(int tamanhoNecessario)
{
if (_itens.Length >= tamanhoNecessario)
{
return; //nao faz nada
}
Console.WriteLine("Aumentando capacidade da lista");
ContaCorrente[] novoArray = new ContaCorrente[tamanhoNecessario];
for (int indice = _itens.Length; indice < _itens.Length; indice++)
{
novoArray[indice] = _itens[indice];
Console.WriteLine(".");
}
_itens = novoArray; // a referência aponta para o novoArray.
}
}
}
Fica aí a alternativa que encontrei!