Destruir objetos

29/12/2003 - 20:57 por Jose Antonio | Informe spam
¿Es posible destruir un objeto en esta clase?

using System;


class Persona
{
public int edad;

public Persona(int edad)
{
this.edad=edad;
}

public int crece()
{
this.edad++;

return this.edad;
}


~Persona(){ Console.WriteLine("Muriendo...");}


public static void Main()
{
Persona Pepe= new Persona(34);

while (Pepe.edad < 42)
{
if (Pepe.edad == 40) ~Pepe();
Console.WriteLine("Edad: " + Pepe.crece());
}

}

}

Preguntas similare

Leer las respuestas

#1 Juan Cristóbal Olivares C.
29/12/2003 - 23:18 | Informe spam
El objeto es destruído cuando el GC se da cuenta de que no hay más
referencias. Podrías implementar IDisposable para agregar métodos Dispose
que hagan el trabajo y puedas llamarlos explícitamente.

Atte,
Juan C. Olivares
www.juancri.com

"Jose Antonio" wrote in message
news:
¿Es posible destruir un objeto en esta clase?

using System;


class Persona
{
public int edad;

public Persona(int edad)
{
this.edad=edad;
}

public int crece()
{
this.edad++;

return this.edad;
}


~Persona(){ Console.WriteLine("Muriendo...");}


public static void Main()
{
Persona Pepe= new Persona(34);

while (Pepe.edad < 42)
{
if (Pepe.edad == 40) ~Pepe();
Console.WriteLine("Edad: " + Pepe.crece());
}

}

}


Respuesta Responder a este mensaje
#2 Jose Antonio
30/12/2003 - 00:32 | Informe spam
Gracias por la respuesta.
Otra pregunta: Es posible destruir un objeto directamente como en C++?

"Juan Cristóbal Olivares C." escribió en el
mensaje news:#
El objeto es destruído cuando el GC se da cuenta de que no hay más
referencias. Podrías implementar IDisposable para agregar métodos Dispose
que hagan el trabajo y puedas llamarlos explícitamente.

Atte,
Juan C. Olivares
www.juancri.com

"Jose Antonio" wrote in message
news:
> ¿Es posible destruir un objeto en esta clase?
>
> using System;
>
>
> class Persona
> {
> public int edad;
>
> public Persona(int edad)
> {
> this.edad=edad;
> }
>
> public int crece()
> {
> this.edad++;
>
> return this.edad;
> }
>
>
> ~Persona(){ Console.WriteLine("Muriendo...");}
>
>
> public static void Main()
> {
> Persona Pepe= new Persona(34);
>
> while (Pepe.edad < 42)
> {
> if (Pepe.edad == 40) ~Pepe();
> Console.WriteLine("Edad: " + Pepe.crece());
> }
>
> }
>
> }
>
>


Respuesta Responder a este mensaje
#3 Juan Cristóbal Olivares C.
31/12/2003 - 02:03 | Informe spam
Sólo los objetos que exponen el método Dispose pueden ser destruidos
explícitamente.

Todos los objetos tienen el destructor (Finalize) pero este es accesible
sólo desde sus herencias. Si hago un objeto con destructor, debo llamar a
base.Finalize()

Aparte de esto, como te comentaba, está el método Dispose. Este método nos
permite especificar explícitamente en qué momento deseamos que se destruyan
los recursos. Agregamos la implementación de IDisposable a nuestro objeto:

class MiClase : IDisposable
{

}

Si en mi código quiero destruir el objeto explícitamente, debo asegurarme de
que no usaré más el objeto y luego llamo a:

objeto.Dispose();

Esto generaría el mismo efecto que destruir el objeto.

En tu método Dispose además deberías llamar a GC.SuppressFinalize(this)..

No recuerdo dónde leí instrucciones para esto, pero puede ser en este libro:
http://www.microsoft.com/spanish/ms...elines.asp

Además mira en la documentación de IDisposable, Object.Finalize(), etc

Atte,
Juan C. Olivares
www.juancri.com

"Jose Antonio" wrote in message
news:%
Gracias por la respuesta.
Otra pregunta: Es posible destruir un objeto directamente como en C++?

"Juan Cristóbal Olivares C." escribió en el
mensaje news:#
> El objeto es destruído cuando el GC se da cuenta de que no hay más
> referencias. Podrías implementar IDisposable para agregar métodos


Dispose
> que hagan el trabajo y puedas llamarlos explícitamente.
>
> Atte,
> Juan C. Olivares
> www.juancri.com
>
> "Jose Antonio" wrote in message
> news:
> > ¿Es posible destruir un objeto en esta clase?
> >
> > using System;
> >
> >
> > class Persona
> > {
> > public int edad;
> >
> > public Persona(int edad)
> > {
> > this.edad=edad;
> > }
> >
> > public int crece()
> > {
> > this.edad++;
> >
> > return this.edad;
> > }
> >
> >
> > ~Persona(){ Console.WriteLine("Muriendo...");}
> >
> >
> > public static void Main()
> > {
> > Persona Pepe= new Persona(34);
> >
> > while (Pepe.edad < 42)
> > {
> > if (Pepe.edad == 40) ~Pepe();
> > Console.WriteLine("Edad: " + Pepe.crece());
> > }
> >
> > }
> >
> > }
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Jose Antonio
02/01/2004 - 18:35 | Informe spam
Gracias Juan.



"Juan Cristóbal Olivares C." escribió en el
mensaje news:
Sólo los objetos que exponen el método Dispose pueden ser destruidos
explícitamente.

Todos los objetos tienen el destructor (Finalize) pero este es accesible
sólo desde sus herencias. Si hago un objeto con destructor, debo llamar a
base.Finalize()

Aparte de esto, como te comentaba, está el método Dispose. Este método nos
permite especificar explícitamente en qué momento deseamos que se


destruyan
los recursos. Agregamos la implementación de IDisposable a nuestro objeto:

class MiClase : IDisposable
{

}

Si en mi código quiero destruir el objeto explícitamente, debo asegurarme


de
que no usaré más el objeto y luego llamo a:

objeto.Dispose();

Esto generaría el mismo efecto que destruir el objeto.

En tu método Dispose además deberías llamar a GC.SuppressFinalize(this)..

No recuerdo dónde leí instrucciones para esto, pero puede ser en este


libro:



http://www.microsoft.com/spanish/ms...s/DesignGu
idelines.asp

Además mira en la documentación de IDisposable, Object.Finalize(), etc

Atte,
Juan C. Olivares
www.juancri.com

"Jose Antonio" wrote in message
news:%
> Gracias por la respuesta.
> Otra pregunta: Es posible destruir un objeto directamente como en C++?
>
> "Juan Cristóbal Olivares C." escribió en el
> mensaje news:#
> > El objeto es destruído cuando el GC se da cuenta de que no hay más
> > referencias. Podrías implementar IDisposable para agregar métodos
Dispose
> > que hagan el trabajo y puedas llamarlos explícitamente.
> >
> > Atte,
> > Juan C. Olivares
> > www.juancri.com
> >
> > "Jose Antonio" wrote in message
> > news:
> > > ¿Es posible destruir un objeto en esta clase?
> > >
> > > using System;
> > >
> > >
> > > class Persona
> > > {
> > > public int edad;
> > >
> > > public Persona(int edad)
> > > {
> > > this.edad=edad;
> > > }
> > >
> > > public int crece()
> > > {
> > > this.edad++;
> > >
> > > return this.edad;
> > > }
> > >
> > >
> > > ~Persona(){ Console.WriteLine("Muriendo...");}
> > >
> > >
> > > public static void Main()
> > > {
> > > Persona Pepe= new Persona(34);
> > >
> > > while (Pepe.edad < 42)
> > > {
> > > if (Pepe.edad == 40) ~Pepe();
> > > Console.WriteLine("Edad: " + Pepe.crece());
> > > }
> > >
> > > }
> > >
> > > }
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida