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.

0voto

Pavan Tiwari Points 301

Vous pouvez utiliser un constructeur statique pour initialiser une variable statique. Le constructeur statique sera le point d'entrée pour votre classe

public class MyClass
{

    static MyClass()
    {

        //écrivez votre code d'initialisation ici
    }

}

0voto

myteardrop4u Points 21

Les classes statiques ne peuvent pas avoir de constructeurs d'instances (contrairement à la réponse acceptée). Toutefois, une classe peut avoir un constructeur statique. C'est totalement différent.

0voto

sotn Points 1460

En C# 9, il y a ModuleInitializer attribut qui est beaucoup mieux que les constructeurs statiques. Les avantages sont énumérés ci-dessous tels que cités sur le site lié:

  • Permet aux bibliothèques de faire une initialisation hâtive, unique fois lors du chargement, avec un minimum de surcharge et sans que l'utilisateur ait besoin d'appeler explicitement quoi que ce soit
  • Un point de douleur particulier des approches de constructeur statique actuelles est que le runtime doit effectuer des vérifications supplémentaires sur l'utilisation d'un type avec un constructeur statique, afin de décider si le constructeur statique doit être exécuté ou non. Cela ajoute une surcharge mesurable.
  • Permet aux générateurs de code source d'exécuter une logique d'initialisation globale sans que l'utilisateur ait besoin d'appeler explicitement quoi que ce soit

Il s'agit de points très importants et on peut utiliser l'attribut comme suit dans leur classe statique :

[ModuleInitializer]
public static void Init()
{
    // Logique
}

-1voto

Prabhakantha Points 574

Vous pouvez utiliser le modèle Singleton pour répondre à votre exigence. Veuillez trouver le code d'implémentation ici.

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