2010-01-27 19 views
7

Tengo una duda de que una clase estática puede contener un constructor privado.¿Podemos tener un constructor privado en una clase estática?

+6

Si tiene Visual Studio (o similar) instalado, mi conjetura es que te llevaría a menos de 1 minuto para compilar y comprobar esto por sí mismo ... –

+3

Johann, eso no es motivo para no pregúntalo en SO. Ver las preguntas frecuentes –

Respuesta

7

clases estáticas no pueden tener constructores de instancia

http://msdn.microsoft.com/en-us/library/79b3xss3.aspx

La siguiente lista proporciona las características principales de una clase estática:

  • Contiene solo miembros estáticos.
  • No se puede crear una instancia.
  • Está sellado.
  • No puede contener constructores de instancias.
6

Una clase estática no puede tener cualquier constructor de instancias (ver CS0710), ya sea público, privado, protegido o interno.

Consulte el siguiente artículo para obtener más información.

Static Classes and Static Class Members (C# Programming Guide)

+0

@jonathan: Estoy buscando una 'clase estática pública' en Reflector un ildasm, pero solo puedo encontrar el constructor estático' static static void .cctor() '. ¿Dónde estaría este constructor de instancia privada? –

5

¿Qué haría este constructor? La clase es estática, por lo que nunca se crea una instancia. Puede tener un constructor estático en una clase no estática para inicializar campos estáticos, pero en una clase estática, el único constructor que tiene sentido es el constructor estático, y que se llama ser el CLR.

adición: Jon Skeet posted an article sobre el momento de la inicialización de la clase estática (normalmente se inicializa en el primer uso, pero a veces se desea inicializar cuando se inicia el programa) y un cambio posible en .NET 4.

+0

@Jonathan Wow, eso es extraño. Estoy tratando de pensar cómo eso alguna vez hubiera sido útil, pero cuando lo reemplazaron creo que tenían la misma conclusión :) –

+0

@Jonathan le dice al CLR que una clase _static_ no puede ser instanciada para Real? –

3

Tu duda es correcta.

Una clase estática solo puede tener un constructor estático y público/privado no se aplica ya que su código nunca puede llamar a este constructor (el CLR sí).

Así que no puede usar un modificador de acceso (público/privado/...) en un constructor estático.

2

regla es clases estáticas no pueden tener constructores de instancia

Cuestiones relacionadas