0Pricing
C# Academy · Leçon

Constructeurs statiques

Initialisez l’état statique une seule fois, exactement.

Constructeurs statiques est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Qu’est-ce qu’un constructeur statique ?

Un constructeur statique initialise les données statiques d’une classe. Il s’exécute automatiquement une seule fois, avant la première utilisation de la classe, et vous ne l’appelez jamais directement.

using System;

class App
{
    public static string Version;

    static App()
    {
        Version = "1.0.0";
        Console.WriteLine("Static constructor ran");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(App.Version);
    }
}

Règles de syntaxe

Un constructeur statique utilise le mot-clé static, porte le nom de la classe, n’accepte aucun paramètre et ne possède aucun modificateur d’accès.

using System;

class Config
{
    public static int MaxUsers;

    static Config()
    {
        MaxUsers = 100;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Max: " + Config.MaxUsers);
    }
}

S’exécute exactement une fois

Quel que soit le nombre d’utilisations de la classe, le constructeur statique ne s’exécute qu’une seule fois, lors de la première utilisation nécessaire.

using System;

class Counter
{
    public static int Instances;

    static Counter()
    {
        Console.WriteLine("Initializing static state");
        Instances = 0;
    }

    public Counter() { Instances++; }
}

class Program
{
    static void Main()
    {
        new Counter();
        new Counter();
        Console.WriteLine("Instances: " + Counter.Instances);
    }
}

Quand se déclenche-t-il ?

L’environnement d’exécution l’appelle juste avant le premier accès à un membre statique ou la première création d’une instance, selon l’événement qui survient en premier.

using System;

class Lazy
{
    public static string Data;

    static Lazy()
    {
        Console.WriteLine("Triggered now");
        Data = "ready";
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Before access");
        Console.WriteLine(Lazy.Data);
    }
}

Initialiser des données statiques complexes

Utilisez un constructeur statique lorsque les champs statiques nécessitent une véritable logique de configuration, et pas seulement de simples valeurs littérales.

using System;
using System.Collections.Generic;

class Lookup
{
    public static Dictionary<int, string> Table;

    static Lookup()
    {
        Table = new Dictionary<int, string>();
        for (int i = 1; i <= 3; i++)
            Table[i] = "Item" + i;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Lookup.Table[2]);
    }
}

Constructeur statique ou initialiseur de champ

Les valeurs simples peuvent utiliser des initialiseurs en ligne. Un constructeur statique convient à une configuration qui nécessite des instructions, des boucles ou une gestion des erreurs.

using System;

class Settings
{
    public static int Simple = 10;        // inline initializer
    public static int Computed;            // needs logic

    static Settings()
    {
        Computed = Simple * Simple;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Settings.Simple + ", " + Settings.Computed);
    }
}

Aucun paramètre autorisé

Comme l’environnement d’exécution l’appelle pour vous, un constructeur statique ne peut pas accepter d’arguments. Toutes ses entrées doivent être d’autres données statiques ou des constantes.

using System;

class Clock
{
    public static int StartHour;

    static Clock()
    {
        StartHour = 9;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Start: " + Clock.StartHour);
    }
}

Combiner constructeurs statiques et d’instance

Une classe peut posséder les deux. Le constructeur statique s’exécute une fois pour le type ; le constructeur d’instance s’exécute pour chaque objet.

using System;

class Game
{
    public static string Title;
    public int Score;

    static Game()
    {
        Title = "Coddy Quest";
    }

    public Game(int score)
    {
        Score = score;
    }
}

class Program
{
    static void Main()
    {
        var g = new Game(50);
        Console.WriteLine(Game.Title + " score " + g.Score);
    }
}

Garantie sur l’ordre d’exécution

Le constructeur statique est garanti d’avoir terminé avant l’exécution du corps de tout constructeur d’instance qui le déclenche. L’état statique est donc toujours prêt.

using System;

class Service
{
    public static string Endpoint;

    static Service()
    {
        Endpoint = "https://api.example.com";
    }

    public Service()
    {
        Console.WriteLine("Using " + Endpoint);
    }
}

class Program
{
    static void Main()
    {
        new Service();
    }
}

À utiliser avec modération

Les constructeurs statiques ajoutent une vérification ponctuelle avant l’utilisation de la classe et peuvent nuire aux performances s’ils sont trop utilisés ou s’ils lèvent une erreur. Gardez-les courts et fiables.

using System;

class Cache
{
    public static int[] Data;

    static Cache()
    {
        Data = new int[] { 2, 4, 6, 8 };
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Cache.Data[3]);
    }
}

Mise en pratique

Les constructeurs statiques sont idéaux pour configurer une seule fois des données partagées en lecture seule, comme des tables de correspondance ou une configuration chargée à partir de constantes.

using System;
using System.Collections.Generic;

class Currency
{
    public static Dictionary<string, string> Symbols;

    static Currency()
    {
        Symbols = new Dictionary<string, string>
        {
            ["USD"] = "$",
            ["EUR"] = "E",
            ["JPY"] = "Y"
        };
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("USD symbol: " + Currency.Symbols["USD"]);
    }
}

Vérification rapide

Testez votre compréhension des constructeurs statiques.

Récapitulatif

Un constructeur statique utilise static ClassName(), sans paramètres ni modificateur d’accès. Il s’exécute une seule fois, automatiquement, avant la première utilisation de la classe, afin d’initialiser l’état statique qui nécessite une véritable logique. Utilisez-le avec modération pour configurer une seule fois des données partagées.

using System;

class Demo
{
    public static int Value;
    static Demo() { Value = 42; }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Demo.Value);
    }
}

Questions Fréquemment Posées

La leçon « Constructeurs statiques » est-elle gratuite ?

Oui — le texte complet de « Constructeurs statiques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Constructeurs statiques » ?

Initialisez l’état statique une seule fois, exactement. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Constructeurs statiques » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir des constructeurs
  2. Chaînage de constructeurs avec this
  3. Initialiseurs d’objets et de collections
  4. Constructeurs statiques
← Retour à C# Academy