Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida na função Remover Conta

Eu não entendi o funcionamento do for e nem do while nessa função.Se alguém puder explicar.

public void RemoveConta(Conta c)
        {
            comboContas.Items.Remove(c.Titular.Nome);
            comboTransfere.Items.Remove(c.Titular.Nome);
            int i;
            for (i = 0; i < this.QuantidadeDeContas; i++)
            {
                if (this.contas[i] == c)
                {
                    break;
                }
            }
            while (i + 1 < this.QuantidadeDeContas)
            {
                this.contas[i] = this.contas[i + 1];
                i++;
            }
        }
2 respostas
solução!

Olá Alexander,

o primeiro for serve para descobrir qual a posição da conta c dentro do array de contas. Ele guarda esta posição em i. Vamos supor que você tenha o seguinte array

array        [c1, c2, c3, c4, null]
posicao        0,  1,  2,  3,  4

Vamos supor que quero remover a c2, ou seja, no primeiro for vai rodar até chegar em i = 1.

Depois que ele acha a posição, ele move todos os elementos que estão a direita dele uma posição para a esquerda com o comando this.contas[i] = this.contas[i + 1];.

Então no exemplo de cima em que a posição i é 1, ele fará this.contas[1] = this.contas[2];, depois this.contas[2] = this.contas[3]; e por fim this.contas[3] = this.contas[4];. Ou seja, o seu array terminaria:

array        [c1, c3, c4, null, null]
posicao        0,  1,  2,    3,   4

Obrigado pela ajuda, consegui compreender agora.