Clases estáticas

    Para facilitar la creación de clases que no estén destinadas a ser instanciadas o derivadas (abstract sealed) sino tan sólo a proporcionar ciertos métodos estáticos (clases fábrica, utilizadas para crear ciertos tipos de objetos, clases utilidad que ofrezcan acceso a ciertos servicios de manera cómoda, sin tener que instanciar objetos, etc.), C# 2.0 permite configurar dicha semántica en la propia declaración de las mismas incluyendo en ellas el modificador static. Así se forzará a que el compilador asegure el seguimiento de dicha semántica. Por ejemplo, el código que a continuación se muestra será válido:


 static public class ClaseEstática
 {
  static public object CrearObjetoTipoA()
  { … }    
  static public object CrearObjetoTipoB()
  { … }    
 }

    Por el contrario, el siguiente código no compilaría ya que la clase ClaseEstáticaConError  se ha definido como estática pero tiene un método no estático llamado MétodoInstancia, se la está intentando instanciar, y se está intentando derivar de ella una clase Hija:


 static public class ClaseEstáticaConError
 {
  static public object CrearObjetoTipoA()
  { … }    
  static public object CrearObjetoTipoB()
  { … }    
  
  public void MétodoInstancia(string texto) // Error: método no estático.
  {
     Console.WriteLine("MétodoInstancia({0})", texto);
  }
  static void Main()
  {
     // Error: Se está instanciado la clase estática
     ClaseEstáticaConError objeto = new ClaseEstáticaConError();
     objeto.MétodoInstancia("Test");
  }
 }
 class Hija: ClaseEstáticaConError {}  
// Error: Se está derivando de clase estática

 

Clases estáticas
José Antonio González Seco

José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.
Fecha de alta:08/01/2007
Última actualizacion:08/01/2007
Visitas totales:20077
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com