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 |