Foros del Web » Programación para mayores de 30 ;) » .NET »

Dudas sobre clases!!

Estas en el tema de Dudas sobre clases!! en el foro de .NET en Foros del Web. 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 = ...
  #1 (permalink)  
Antiguo 20/08/2007, 13:39
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 8 meses
Puntos: 0
Dudas sobre clases!!

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!!
  #2 (permalink)  
Antiguo 22/08/2007, 21:36
 
Fecha de Ingreso: agosto-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Dudas sobre clases!!

Hola Said:
En realidad lo que esta pasando es lo siguiente. cuando:
a=new Objeto(1); // creas una istancia con el atributo dato=1, y a referencia al este Objeto creado
a=new Objeto(2); // creas una segunda istancia con el atributo dato=2, donde a referencia al objeto que posee su atributo dato=2, pero acabas de perder la referencia al primer objeto con su atributo dato=1
a=new Objeto(3); // creas una tercera istancia con el atributo dato=3, donde a referencia al objeto que posee su atributo dato=3, pero acabas de perder la referencia al primer objeto con su atributo dato=1 y al segundo.
En si lo que esta pasando es que cuando creas un nuevo objeto usando la variable que antes hacia referencia a otro este simplemente se cambia, pero el objeto anterior sigue vivo (si vale el termino) hasta que el destructor entre en juego y como ya no usas mas esos objetos los elimina (eso pasa con el garbas collector de .NET) encambio cuando creas el destructor tu lo tienes que invocar o algo asi recuerdo, jeje espereo que haya contestado tu duda.
Slds
Jhonny M.....
MSP Bolivia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:59.