Como faria se quisesse copiar todos os valores de uma instancia para outra?
Como faria se quisesse copiar todos os valores de uma instancia para outra?
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.