161 votes

C# constructeur de classe statique

Y a-t-il une solution pour créer un constructeur pour une classe statique?

J'ai besoin que des données soient chargées lorsque la classe est initialisée mais je n'ai besoin que d'un seul objet.

277voto

Jared S Points 993

Le langage C# dispose d'un constructeur statique à cette fin.

static class VotreClasse
{
    static VotreClasse()
    {
        // effectuer l'initialisation ici
    }
}

Depuis MSDN:

Un constructeur statique est utilisé pour initialiser des données statiques, ou pour effectuer une action particulière qui doit être effectuée une seule fois. Il est appelé automatiquement avant que la première instance ne soit créée ou que des membres statiques ne soient référencés.

Lien MSDN

.

21 votes

Notez qu'il n'est pas nécessaire que la YourClass soit statique.

40 votes

Pour être juste, l'auteur original a spécifiquement demandé un constructeur pour une classe statique.

47voto

Sven Points 10540

Un constructeur statique ressemble à ceci

class statique Foo
{
    static Foo()
    {
         // Code d'initialisation statique ici
    }
}

Il est exécuté seulement une fois lorsque le type est utilisé pour la première fois. Toutes les classes peuvent avoir des constructeurs statiques, pas seulement les classes statiques.

1 votes

En réalité, "Il est appelé automatiquement AVANT que la première instance ne soit créée ou que des membres statiques ne soient référencés" msdn.microsoft.com/en-us/library/k9x6w0hc.aspx

5voto

Kumod Singh Points 563

Oui, une classe statique peut avoir un constructeur statique, et l'utilisation de ce constructeur est l'initialisation d'un membre statique.

static class Employee1
{
    static int EmpNo;
    static Employee1()
    {
        EmpNo = 10;
        // effectuer l'initialisation ici
    }
    public static void Add()
    { 

    }
    public static void Add1()
    { 

    }
}

et le constructeur statique est appelé une seule fois lorsque vous avez accès à un membre de type statique de la classe statique avec le nom de classe Class1

Supposons que vous accédiez au premier champ EmployeeName, alors le constructeur est appelé cette fois-ci, après cela il ne sera pas appelé, même si vous accédez au même membre de type.

 Employee1.EmployeeName = "kumod";
        Employee1.Add();
        Employee1.Add();

2voto

Hasan Fathi Points 2182

Le constructeur statique est appelé uniquement lors de la création de la première instance de la classe.

comme ceci :

classe statique VotreClasse
{
    static VotreClasse()
    {
        //initialisation
    }
}

1voto

Shivang Gupta Points 57

Nous pouvons créer un constructeur statique

static class StaticParent 
{
  StaticParent() 
  {
    //écrivez votre code d'initialisation ici

  }

}

et il est toujours sans paramètre.

static class StaticParent
{
    static int i =5;
    static StaticParent(int i)  //Donne une erreur
    {
      //écrivez votre code d'initialisation ici
    }
}

et il n'a pas le modificateur d'accès

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X