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

Problema com codigo da Aula.

Na aula e criado o metodo Remover, que recebe como parametro a conta, porem no final do metodo não é retornado nada, com a seguir:

// Codigo proposto durante a video aula.

public ContaCorrente Remover(ContaCorrente conta)
{
    int indiceItem = -1;

    for (int i = 0; i < _proximaPosicao; i++)
    {
        ContaCorrente ContaAtual = _itens[i];
        if (ContaAtual == conta)
        {
            indiceItem = i;
            break;
        }
    }

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

    _proximaPosicao--;
    _itens[_proximaPosicao] = null;

    // metodo sem retorno do parâmetro.
}

Porem ao ao criar esse mesmo codigo no meu projeto e executa-lo, a IDE acusa erro do programando, informando a seguinte mensagem:

Erro CS0161 "ListaDeContasCorrentes.Remover(ContaCorrente)": nem todos os caminhos de código retornam um valor.

adicionei o retorno do paramentro qu eo metodo receber nesse caso o paramentro conta no final do metodo como a seguir:

// Codigo com o retorno do paramentro do metodo.

public ContaCorrente Remover(ContaCorrente conta)
{
    int indiceItem = -1;

    for (int i = 0; i < _proximaPosicao; i++)
    {
        ContaCorrente ContaAtual = _itens[i];
        if (ContaAtual == conta)
        {
            indiceItem = i;
            break;
        }
    }

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

    _proximaPosicao--;
    _itens[_proximaPosicao] = null;

    // metodo com retorno do parâmetro.
    return conta;
}

O codigo executa sem erro, porem os dados das conta criadas não aparece no Console, ao inves de aparece os dados das contas, aparece o endereço de memoria de cada conta como a seguir:

Adicionando item na posicao 0
Adicionando item na posicao 1
Adicionando item na posicao 2
Adicionando item na posicao 3
Adicionando item na posicao 4
Adicionando item na posicao 5
Aumentando Capacidade da Lista!
Adicionando item na posicao 6
Aumentando Capacidade da Lista!
Indice[0] = Conta:8f161417 - Nº da Agencia: 987
Indice[1] = Conta:65c3cffa - Nº da Agencia: 986
Indice[2] = Conta:731ba7d7 - Nº da Agencia: 985
Indice[3] = Conta:8f30e31e - Nº da Agencia: 984
Indice[4] = Conta:3047ea51 - Nº da Agencia: 983
Indice[5] = Conta:fb7321b0 - Nº da Agencia: 982
Indice[6] = Conta:c01beeb0 - Nº da Agencia: 2020
=================
Indice[0] = Conta:8f161417 - Nº da Agencia: 987
Indice[1] = Conta:65c3cffa - Nº da Agencia: 986
Indice[2] = Conta:731ba7d7 - Nº da Agencia: 985
Indice[3] = Conta:8f30e31e - Nº da Agencia: 984
Indice[4] = Conta:3047ea51 - Nº da Agencia: 983
Indice[5] = Conta:fb7321b0 - Nº da Agencia: 982

O que poderia ser feito para que os dados das contas seja mostrado ao inves do endereço de memoria de cada conta?

2 respostas
solução!

Olá! O problema que está ocorrendo é porque, ao imprimir as contas na tela, está sendo exibido o endereço de memória de cada objeto, e não as informações da conta em si. Para exibir as informações da conta, você precisa sobrescrever o método "ToString()" na classe ContaCorrente e retornar uma "string" com as informações que deseja exibir. Por exemplo: public override string ToString() { return "Número da agência: " + this.NumeroAgencia + " | Número da conta: " + this.NumeroConta; } Dessa forma, quando você chamar o método "Console.WriteLine" para imprimir as contas na tela, ele irá utilizar a representação em string da conta que foi definida no método "ToString()". Se você não sobrescrever esse método, a implementação padrão da classe "Object" será utilizada, o que explica o motivo de estar sendo exibido o endereço de memória do objeto.

Jackson.

ah sim, consegui aqui, obrigado Jackson.