4
respostas

Resultado do programa abaixo é 1000 ou 1500?

No programa abaixo, quando a ContaCorrente outraConta = minhaConta, a primeira está recebendo a referência da segunda, portanto ambas as referencias apontam para a primeira. Se a primeira não foi inicializada com nenhum saldo, entendo que, por defult, seja 0. No momento em que é adicionado 1000 ao saldo, este deve resultar em 1000. Mas o exercício diz que a alternativa correta é 1500, por isto fiquei na dúvida.

    class Program
    {
public static void Main(string [] args)
{
    ContaCorrente minhaConta = new ContaCorrente();
    minhaConta.saldo = 500;
    ContaCorrente outraConta = minhaConta;
    outraConta.saldo += 1000;

    Console.WriteLine(minhaConta.saldo);
    Console.ReadLine();
}
}
4 respostas

Bom dia, Cristiane. tudo bem? Embora tenha inicialização, na linha abaixo é atribuído 500 para minhaConta.saldo, totalizando 1500. Caso não tenha respondido sua dúvida, fique a vontade para responder por aqui ;)

Olá, Cristiane!

Ele instanciou a nova conta em "ContaCorrente minhaConta = new ContaCorrente();" e atribuiu o valor de 500 a esta nova conta quando ele utilizou "minhaConta.saldo = 500;".

Quando ele utilizou "ContaCorrente outraConta = minhaConta;" foi feita a referência para o mesmo objeto, logo "minhaconta" também passou a ter 500.

Por fim, quando ele utilizou "outraConta.saldo += 1000;", foi somado 1000 aos 500 que estava na "outraConta.

Não sei se consegui explicar direito. Qualquer coisa tentamos de novo.

Oi Alice obrigada pela sua resposta, mas não entendi a lógica porque conforme entendi da aula, se ContaCorrente outraConta = minhaConta, minhaConta passa a apontar para os valores contidos em "outraConta". As 2 agora estão referenciando o mesmo espaço de memória que era originalmente apenas de "outra conta". E "outra conta" não tinha 500 reais. No momento em que outraConta = minhaConta, minhaConta abandona a referencia que apontava para o espaço de memória contendo 500 reais e passa a apomtar para o mesmo espaço de memória que outaConta (sem os 500 reais). Ao compilar a resposta é 1.500, mas não condiz com a lógica que eu construí a a partir da aula. Se alguém puder me explicar em qual ponto do meu raciocínio eu estou errando, talvez eu possa entender a lógica corrreta.

Oi Priscila, obrigada pela sua resposta, eu entendi o que você falou e faz sentido. Mas, seguindo esta lógica, no momento em que ContaCorrente outraConta = minhaConta, as duas passam a apontar para os valores contidos em "minhaConta" (500 reais). outraConta então aponta ---->>> para minhaConta, não o contrário.

Sendo assim, não combina com a explicação da aula abaixo do curso C# parte 2 - aula 2 - tópico 02. Tipos - Atividade 7: Tipos de referencia e tipos de valor: Lá está escrito:

" contaDaGabriela = contaDaGabrielaCosta; Dessa forma, estamos dizendo que contaDaGabriela recebe (=) contaDaGabrielaCosta. É como se a seta que sai de contaDaGabrielaCosta passasse a apontar para o objeto de contaDaGabriela. Atualizaremos o saldo de contaDaGabriela para 300. O saldo das duas contas ficou igual (300). No entanto, não mexemos no saldo em contaDaGabrielaCosta. No código, atualizamos somente contaDaGabriela, alterando o saldo — do objeto ao qual ela faz referência — para 300. Assim, não modificamos o valor da referência da variável de contaDaGabrielaCosta diretamente, mas como ela está apontando para o objeto ao qual contaDaGabriela faz referência, fizemos a alteração indiretamente. " Realmente ao esecutar código acima, vimos que a contaDaGabrielaCosta foi que apontou para o mesmo local que contaDaGabriela. Poque esta diferença com o caso das contas?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software