- Il m'expliquer l'utilisation de constructeur statique. Pourquoi et quand nous créons un constructeur statique et est-il possible de surcharger un?
Réponses
Trop de publicités?Non, vous ne pouvez pas surcharger; un constructeur statique est utile pour initialiser les champs statiques associés à un type (ou une autre par des opérations de type), utile en particulier pour la lecture de la configuration requise de données en lecture seule champs, etc.
Il est exécuté automatiquement par le moteur d'exécution la première fois que cela est nécessaire (les règles sont compliquées (voir "beforefieldinit"), et a changé de façon subtile entre CLR2 et CLR4). À moins que vous l'abus de la réflexion, il est garanti au plus une fois (même si les deux fils arrivent en même temps).
De Constructeurs Statiques (Guide De Programmation C#):
Un constructeur statique est utilisé pour initialiser les données statiques, ou à effectuer une action particulière qui a besoin de effectuée une seule fois. Il est appelé automatiquement avant la première exemple de la création ou de l'électricité statique les membres sont référencés.
Constructeurs statiques sont les suivantes propriétés:
Un constructeur statique ne prend pas de modificateurs d'accès ou des paramètres.
Un constructeur statique est automatiquement appelée pour initialiser la classe avant la première instance est créée ou tous les membres statiques sont référencés.
Un constructeur statique ne peut pas être appelée directement.
L'utilisateur n'a aucun contrôle sur quand le constructeur statique est exécutée dans le programme.
Une utilisation typique de constructeurs statiques, c'est quand la classe est à l'aide d'un fichier journal et le constructeur est utilisé pour écrire des entrées dans ce fichier.
Constructeurs statiques sont également utiles lors de la création de classes wrapper pour le code non managé, lorsque le constructeur peut appeler l'
LoadLibrary
méthode.
vous pouvez utiliser statique constructeur initialise les champs statiques. Il fonctionne à une indéterminée à temps avant que ces champs sont utilisés. La documentation de Microsoft et de nombreux développeurs de les avertir que les constructeurs statiques sur un type imposer une surcharge importante.
Il est préférable d'éviter les constructeurs statiques pour des performances maximales.
mise à jour: vous ne pouvez pas utiliser plus d'un constructeur statique dans la même classe, mais vous pouvez utiliser d'autres constructeurs d'instances (maximum) un constructeur statique.
Un petit plus est que vous pouvez l'utiliser pour implémenter un Singleton agréable et facilement aussi:
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
private Singleton(){}
public static Singleton Instance
{
get
{
return instance;
}
}
}
Plus de détails peuvent être trouvés à http://msdn.microsoft.com/en-us/library/ff650316.aspx