2010-05-17 9 views
4

Une classe non statique peut avoir un constructeur statique et un constructeur par défaut en même temps.Constructeur statique et par défaut

Quelle est la différence entre ces deux constructeurs? Quand dois-je aller seulement statique ou statique avec le constructeur par défaut?

Répondre

8

Le constructeur statique s'exécute une fois par AppDomain juste avant d'accéder à l'instance de la classe la première fois. Vous pouvez l'utiliser pour initialiser des variables statiques. Par contre, le constructeur par défaut s'exécute chaque fois que vous créez une nouvelle instance de la classe. Par contre, le constructeur par défaut s'exécute. Dans le constructeur par défaut, vous pouvez initialiser les champs non statiques de l'instance.

3

Un constructeur statique s'exécute une seule fois, quel que soit le nombre d'objets de ce type créés. Un constructeur par défaut sera exécuté pour chaque instance créée par ce constructeur.

0

Crashing parti après tout le monde a quitté ...

Les deux réponses sont correctes, je voulais juste ajouter ce lien: Static Constructors (C# Programming Guide).

les citer:

Un constructeur statique est utilisé pour initialiser toutes les données statiques, ou pour effectuer une action particulière qui doit être effectuée qu'une seule fois. Il est appelé automatiquement avant la création de la première instance ou tout membre statique référencé.

Leurs propriétés:

  • Un constructeur statique ne prend pas les modificateurs d'accès ou qui ont des paramètres.
  • Un constructeur statique est appelé automatiquement pour initialiser la classe avant la création de la première instance ou la référence de tous les membres statiques.
  • Un constructeur statique ne peut pas être appelé directement.
  • L'utilisateur n'a aucun contrôle sur quand le constructeur statique est exécuté dans le programme.
  • Une utilisation typique des constructeurs statiques est lorsque la classe utilise un fichier journal et que le constructeur est utilisé pour écrire des entrées dans ce fichier.
  • Les constructeurs statiques sont également utiles lors de la création de classes wrapper pour du code non managé, lorsque le constructeur peut appeler la méthode LoadLibrary.
  • Si un constructeur statique déclenche une exception, le moteur d'exécution ne l'invoquera pas une seconde fois et le type restera non initialisé pour la durée de vie du domaine d'application dans lequel votre programme est en cours d'exécution.

Vous pouvez vous diriger vers le lien ci-dessus pour la démonstration et l'exemple de code.