public static void Executar() { //Struck Console.WriteLine("----Struct----"); SPonto ponto1 = new SPonto { X = 1, Y = 3 }; SPonto copiaSPonto = ponto1; //Atribuição por VALOR!!! ponto1.X = 3; Console.WriteLine("Ponto 1 x:{0}", ponto1.X); Console.WriteLine("Copia do ponto 1 X:{0}", copiaSPonto.X); //Class Console.WriteLine("----Class----"); CPonto ponto2 = new CPonto { X = 2, Y = 4 }; CPonto copiaCponto = ponto2; //Atreibuição por REFERÊNCIA!!! ponto2.X = 4; Console.WriteLine("Ponto 2 x:{0}", ponto2.X); Console.WriteLine("Copia do ponto 2 x:{0}", copiaCponto.X); }
public static void Executar() { SPonto ponto1 = new SPonto { X = 1, Y = 3 }; SPonto copiaPonto1 = ponto1; // Atribuição por Valor e não por referencia. (Struct a passagem sempre é por valor e não por referencia) ponto1.X = 3; Console.WriteLine($"Ponto 1 X: {ponto1.X}"); Console.WriteLine($"Copia ponto 1 X: {copiaPonto1.X}"); CPonto ponto2 = new CPonto { X = 2, Y = 4 }; CPonto copiaPonto2 = ponto2; // Atribuição de uma classe é feita por referencia (trocando assim o valor pelo novo setado) ponto2.X = 6; Console.WriteLine($"\nPonto 2 X: {ponto2.X}"); Console.WriteLine($"Copia ponto 2 X: {copiaPonto2.X}"); }
public static void Executar() { SPonto ponto1 = new SPonto { X = 1, Y = 3 }; SPonto copiaPonto1 = ponto1;//Atribuição por valor ponto1.X = 3; Console.WriteLine("Ponto 1 X:{0}", ponto1.X); Console.WriteLine("Copia Ponto 1 X:{0}", copiaPonto1.X); CPonto ponto2 = new CPonto { X = 2, Y = 4 }; CPonto copiaPonto2 = ponto2; // Atribuição POR REFERENCIA ponto2.X = 5; Console.WriteLine("Ponto 2 X:{0}", ponto2.X); Console.WriteLine("Copia do ponto 2 X:{0}", copiaPonto2.X); }