2010-06-08 18 views

Respuesta

30

static y public son conceptos ortogonales (es decir, no tienen nada que ver el uno con el otro).

public simplemente significa que los usuarios de la clase pueden llamar a ese constructor (a diferencia de, digamos, private).

static significa que el método (en este caso, el constructor) pertenece no a una instancia de una clase sino a la "clase misma". En particular, un constructor estático se llama una vez, automáticamente, cuando la clase se utiliza por primera vez.

Además, un constructor estático no se puede hacer public o private ya que no se puede llamar manualmente; solo lo llama el tiempo de ejecución .NET, por lo que marcarlo como public no sería significativo.

3

estático Constructor ... Está garantizado para ser llamado "una vez" througout la vida de la aplicación/aplicación de dominio. Puede contener declaraciones que desea que se ejecuten solo una vez.

constructor público ... Ya que no podemos añadir modificadores de acceso a un constructor estático, un constructor público significa que usted está hablando acerca de un constructor de instancias. Si un constructor de instancia es público, el mundo exterior puede crear sus instancias. Otras opciones son internas (se pueden llamar desde la biblioteca), privadas (solo desde la clase).

+1

es un constructor estático garantiza que es llamado una vez? ¿Qué pasa si el tipo nunca se usa dentro del ciclo de vida de una aplicación? – MPritchard

+0

@MPritch, tiene razón en ese caso, no será llamado. Pero ni siquiera tengo que preocuparme por las cosas que una clase está haciendo (o no haciendo) si no estoy usando (o refiriéndolo) a ninguna parte de mi aplicación, el rito. –

+0

que todo depende de lo que está haciendo en el constructor – MPritchard

22

constructor estático se ejecuta sólo una vez, antes de que se crea una instancia de su clase. Se usa si quieres que algo suceda solo una vez. Un buen ejemplo sería una clase de Bus (similar a algo que ellos explican en MSDN article):

public class Bus 
{ 
    public static int busNo = 0; 

    static Bus() 
    { 
     Console.WriteLine("Woey, it's a new day! Drivers are starting to work."); 
    } 

    public Bus() 
    { 
     busNo++; 

     Console.WriteLine("Bus #{0} goes from the depot.", busNo); 
    } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     Bus busOne = new Bus(); 
     Bus busTwo = new Bus(); 
    } 

    // Output: 
    // Woey, it's a new day! Drivers are starting to work. 
    // Bus #1 goes from the depot. 
    // Bus #2 goes from the depot. 
} 
+0

me gusta debido a la clara primera línea: simple y sin complicaciones! –

2

estático Constructor

Un constructor declara usando modificador static es un constructor estático. Un constructor estático se usa para inicializar datos estáticos o para realizar una acción particular que debe realizarse solo una vez en el ciclo de vida de la clase. El constructor estático es el primer bloque de código para ejecutar en clase. El constructor estático se ejecuta solo una vez en el ciclo de vida de la clase. Se llama automáticamente. El constructor estático no toma ningún parámetro. No tiene especificadores de acceso. No se llama directamente.

Instancia o Constructor Público

Instancia constructor se utiliza para inicializar los datos de instancia. Se llama al constructor de instancias cada vez que se crea un objeto de clase. Se llama explícitamente. Instance constructor toma los parámetros. Tiene especificadores de acceso.

Cuestiones relacionadas