1
resposta

Dúvida no código do exemplo.

Olá!

No código do exemplo não entendi de onde vem o valor da variável int tamanhoNecessario para que seja comparado com o numero de posições do Array.

private void VerificarCapacidade(int tamanhoNecessario) { if (_itens.Length>= tamanhoNecessario) { return; }

}

1 resposta

Boa noite!

Acho que seja porque no construtor da classe Lista ele já define a variável _proximaPosicao com o valor 0. Então quando a classe Lista é instanciada em um objeto, ele sempre começa a _proximaPosicao com 0 e conforme as adições e remoções acontecem no processamento do código, ele altera esse valor para assim controlar a próxima posição.

       public Lista(int capacidadeInicial = 5)
        {
            _itens = new T[capacidadeInicial];
            _proximaPosicao = 0;
        }

Depois ele interage com a variável nos métodos Adicionar e Remover.

public void Adicionar(T item) {

            VerificarCapacidade(_proximaPosicao + 1);

            // Console.WriteLine($"Adicionando item na posição {_proximaPosicao}");

            _itens[_proximaPosicao] = item;
            _proximaPosicao++;
        }

        public void Remover(T item)
        {
            int indiceItem = -1;

            for (int i = 0; i < _proximaPosicao; i++)
            {
                T itemAtual = _itens[i];

                if (itemAtual.Equals(item))
                {
                    indiceItem = i;
                    break;
                }
            }

            for (int i = indiceItem; i < _proximaPosicao - 1; i++)
            {
                _itens[i] = _itens[i + 1];
            }

            _proximaPosicao--;

        }