gentoo linux, java, software libre y otras hierbas
nov, 24 2008 - 7:52 am

Variables estáticas y destructores en C#

Las variables estáticas son atributos de una clase que están disponibles para todas las instancias de dicha clase, y a los cuales puedes acceder directamente (sin instanciar un objeto) de la forma Clase.Variable.

Los destructores son métodos que se ejecutan cuando se elimina un objeto; son especialmente útiles si deseamos hacer algo en particular, antes de eliminar la referencia al objeto. A continuación un sencillo ejercicio, en donde se ejemplifica el uso de las variables estáticas y de los destructores en C Sharp:

using System;
namespace Estatico{
   public class Clase {
      //un atributo normal
      private string variable;
      //esta variable esta disponible para todas
      //las instancias de esta clase
      private static int contador;
      //constructor
      public Clase(string x) {
         variable = x;
         //aumentar valor de la variable estatica
         ++contador;
         Console.WriteLine("Constructor de "+variable);
      }
      ~Clase(){
         --contador;
         Console.WriteLine("Se destruyo una de las instancias ("+variable+")"+contador);
      }
      public static int Contador{
         get{
            return contador;
         }
      }
   }
}

Clase que utiliza los valores estáticos de la clase anterior:

using System;
namespace Estatico{
   public class Principal{
      static void Main(string[] args){
         Console.WriteLine("Contador antes de crear objetos: "+Clase.Contador);
         //crear 2 instancias de la clase
         Clase objeto1 = new Clase("primero");
         Clase objeto2 = new Clase("segundo");
         Console.WriteLine("Contador despues de crear objetos: "+Clase.Contador);
         //eliminar referencias a los objetos
         objeto1 = null;
         objeto2 = null;
         //forzar al recolector de basura a ejecutarse
         System.GC.Collect();
         //esperar hasta que el recolector de basura termine su trabajo
         System.GC.WaitForPendingFinalizers();
         //despues de la recolecta de basura...
         Console.WriteLine("Despues de la recolecta de basura, contador: "+Clase.Contador);
      }
   }
}

Descargar código fuente

2 Comentarios | deja el tuyo

2 enlaces entrantes

Sin comentarios en “Variables estáticas y destructores en C#”

¡Déjanos tu comentario!