4
respostas

copiar todos os valores de uma instancia para outra

Como faria se quisesse copiar todos os valores de uma instancia para outra?

4 respostas

Olá Rene!

Fiquei um pouco confuso sobre sua dúvida.

Para copiar os valores, mas manter duas instâncias você poderia criá-las e depois fazer a referências diretamente para os valores.

ContaCorrente contaDaGabriela = new ContaCorrente();
contaDaGabriela.titular = "Gabriela";
contaDaGabriela.agencia = 863;
contaDaGabriela.numero = 863146;

ContaCorrente contaDaGabrielaCosta = new ContaCorrente();
contaDaGabrielaCosta.titular = contaDaGabriela.titular;
contaDaGabrielaCosta.agencia = contaDaGabriela.agencia;
contaDaGabrielaCosta.numero = contaDaGabriela.numero;

Mas se não for essa sua dúvida, é só dizer qual é que tentaremos ajudar novamente.

Bons estudos!

Oi Rene, precisaria de mais detalhes para ser preciso na resposta , mas segue alguns exemplos:

// Instancia 1
            Diretor d1 = new Diretor(1000, "123.123");
            Console.WriteLine($"CPF d1: {d1.CPF}");
            Console.WriteLine($"Salario d1: {d1.Salario}");

            // Instancia 2 apontando para instancia 1
            Diretor d2 = d1;
            Console.WriteLine($"CPF d2: {d2.CPF}");
            Console.WriteLine($"Salario d2: {d2.Salario}");

            // Mudando valor da instancia 1
            d1.CPF = "444";
            d1.Salario = 5000;

            // Os valores serao iguais nas duas instancias pois a instancia 2 aponta para a primeira 1
            Console.WriteLine($"CPF d1: {d1.CPF}");
            Console.WriteLine($"Salario d1: {d1.Salario}");

            Console.WriteLine($"CPF d2: {d2.CPF}");
            Console.WriteLine($"Salario d2: {d2.Salario}");

            // Copiando valores de uma instancia para outra ao inves de referencia
            Diretor d3 = new Diretor(15000, "AAA");
            Diretor d4 = new Diretor(d3.Salario, d3.CPF);

            Console.WriteLine($"CPF d3: {d3.CPF}");
            Console.WriteLine($"Salario d4: {d3.Salario}");

            Console.WriteLine($"CPF d3: {d4.CPF}");
            Console.WriteLine($"Salario d3: {d4.Salario}");

            // Alterando os valores de d3 nao afetara d4
            d3.Salario = 100;
            d3.CPF = "GGG";

            Console.WriteLine($"CPF d3: {d3.CPF}");
            Console.WriteLine($"Salario d3: {d3.Salario}");

            Console.WriteLine($"CPF d4: {d4.CPF}");
            Console.WriteLine($"Salario d4: {d4.Salario}");

Estou simulando dois cenarios, um de copia de valor e outro de referencia a outro objeto, Veja o que te atende. Mais detalhes, por favor, pode continuar com o questionamento.

Obrigado pelas respostas! Desta Maneira:

ContaCorrente contaDaGabriela = new ContaCorrente();
contaDaGabriela.titular = "Gabriela";
contaDaGabriela.agencia = 863;
contaDaGabriela.numero = 863146;

ContaCorrente contaDaGabrielaCosta = new ContaCorrente();
contaDaGabrielaCosta.titular = contaDaGabriela.titular;
contaDaGabrielaCosta.agencia = contaDaGabriela.agencia;
contaDaGabrielaCosta.numero = contaDaGabriela.numero;

, preciso copiar todos o valores,um a um. Existe algum meio que possa copiar todos os valores?

Ex: contaDaGabriela = contaDaGabrielaCosta , não funciona pois estou apontado para a contaDaGabrielaCosta e não passando somente os valores!

Voce pode criar um metodo para copiar valores de uma conta para outra, por exemplo:

class ContaCorrente
    {
        public string Titular { get; set; }
        public int Agencia { get; set; }
        public int Numero { get; set; }

        public ContaCorrente(string titular, int agencia, int numero)
        {
            Titular = titular;
            Agencia = agencia;
            Numero = numero;
        }

        public void CopiarConta(ContaCorrente copiarDe)
        {
            var copia = copiarDe as ContaCorrente;
            if (copia == null)
            {
                return;
            }

            Titular = copia.Titular;
            Agencia = copia.Agencia;
            Numero = copia.Numero;
        }
    }

Metodo Main

         var c1 = new ContaCorrente("Pessoa 1", 003, 2432);
            var c2 = new ContaCorrente("Pessoa 2", 005, 1000);

            Console.WriteLine($"c1: Titular: {c1.Titular} - Agencia: {c1.Agencia} - Numero: {c1.Numero}");
            Console.WriteLine($"c2: Titular: {c2.Titular} - Agencia: {c2.Agencia} - Numero: {c2.Numero}");

            c2.CopiarConta(c1);
            Console.WriteLine($"c1: Titular: {c1.Titular} - Agencia: {c1.Agencia} - Numero: {c1.Numero}");
            Console.WriteLine($"c2: Titular: {c2.Titular} - Agencia: {c2.Agencia} - Numero: {c2.Numero}");

Dessa forma tem um metodo que copia os dados de uma conta para outra.

Espero ter ajudado.

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