2012-02-14 18 views
11

¿Cómo es posible que la clase en C# puede ha definido ningún constructores? Por ejemplo tengo una claseC# clase sin constructor

internal class TextStyle 
{ 
    internal string text = ""; 
    internal Font font = new Font("Arial", 8); 
    internal Color color = Color.Black; 
} 

Y en el código de esta clase se instancia como

TextStyle textParameters = new TextStyle(); 

Respuesta

31

Si no se declara ningún constructor para una clase no estática, el compilador proporciona una pública (o protegido para clases abstractas) constructor sin parámetros para usted. Su clase tiene efectivamente un constructor de:

public TextStyle() 
{ 
} 

Esto se describe en la sección 10.11.4 de la especificación C# 4:

Si una clase no contiene declaraciones ejemplo constructor, un constructor de instancia predeterminado es automáticamente previsto. Ese constructor predeterminado simplemente invoca el constructor sin parámetros de la clase base directa. Si la clase base directa no tiene un constructor de instancia sin parámetros accesible, se produce un error en tiempo de compilación. Si la clase es abstracta, a continuación, la accesibilidad declarada por el constructor por defecto es protected. De lo contrario, la accesibilidad declarada para el constructor predeterminado es public.

Las únicas clases en C# que no tienen ninguna constructores de instancia son clases estáticas, y no pueden tener constructores.

0

Hay un constrctor implícitamente vacía si no se define otro constructor.

+3

-1; este efecto sólo repite lo que Jon Skeet escribió 40 segundos antes, pero con errores tipográficos, con menos detalle, y sin una referencia autorizada. Esta respuesta no agrega ningún valor a la página. –

Cuestiones relacionadas