Hola, tengo este codigo.
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Objeto
{
public int dato;
public Objeto(int valor)
{
this.dato = valor;
Console.WriteLine("Construido Objeto con el valor {0}", valor);
}
~Objeto()
{
Console.WriteLine("Destructor de Objeto con el valor {0}", this.dato);
}
}
class Destructores2App
{
static void Main()
{
Objeto a;
string c;
Console.WriteLine("Pulsa INTRO para instanciar el primer objeto");
c = Console.ReadLine();
a = new Objeto(1);
Console.WriteLine("Pulsa INTRO para instanciar el segundo objeto");
c = Console.ReadLine();
a = new Objeto(2);
Console.WriteLine("Pulsa INTRO para instanciar el tercer objeto");
c = Console.ReadLine();
a = new Objeto(3);
Console.WriteLine("Pulsa INTRO para ejecutar a=null");
c = Console.ReadLine();
a = null;
Console.WriteLine("Pulsa INTRO para ejecutar CG.Collect()");
c = Console.ReadLine();
GC.Collect();
c = Console.ReadLine();
}
}
}
Lo que yo entiendo ahi es que esta creando instancias de Objeto en la variable a. Esto ejecuta el constructor del objeto el cual tiene un parametro (valor).
Mi duda es, al hacer:
a = new Objeto(1);
a = new Objeto(2);
a = new Objeto(3);
Estoy creando tres instancias diferentes a Objeto?
Si es asi, que pasa con las instancias anteriores cuendo creo una nueva en la misma variable, es decir, que pasa con a cuando se ejecuta
a = new Objeto(2);
Si antes se habia instanciado con el parametro 1.
Y la otra duda es: Porque cuando se ejecuta el destructor, "destruye" el objeto instanciado con cada uno de los parametros? en realidad si se crearon tres instancias? pero como si las mismas se asignaron siempre a la misma variable (a).
De antemano Gracias!!