Partager via


Conception de constructeurs de type

Mise à jour : novembre 2007

Un constructeur de type sert à initialiser des données statiques dans un type. Il est appelé par le Common Language Runtime (CLR) avant de créer des instances du type. Les constructeurs de type sont static (Shared en Visual Basic) et ne peuvent pas prendre de paramètres.

Les instructions suivantes aident à garantir une utilisation des constructeurs statiques conforme aux méthodes conseillées.

Marquez les constructeurs de type comme étant privés.

Un constructeur de type, également appelé constructeur de classe ou constructeur statique, est utilisé pour initialiser un type. Le Common Language Runtime appelle le constructeur de type avant la création de la première instance du type ou avant l'appel à tout membre statique sur le type. Si un constructeur statique n'est pas privé, il peut être appelé par du code autre que le Common Language Runtime. Selon les opérations effectuées dans le constructeur, cette possibilité peut provoquer un comportement inattendu.

Ne levez pas d'exceptions à partir des constructeurs de type.

Si un constructeur de type lève une exception, le type n'est pas utilisable dans le domaine d'application où l'exception a été levée.

Envisagez d'initialiser des champs statiques inline au lieu d'utiliser explicitement des constructeurs statiques dans la mesure où le Common Language Runtime peut optimiser les performances des types qui ne possèdent pas de constructeur statique explicitement défini.

L'exemple de code suivant illustre une conception qui ne peut pas être optimisée.

Public Class BadStaticExample
    Shared runId as Guid
    Shared Sub New()
        runId  = Guid.NewGuid()
    End Sub
    ' Other members...
End Class
public class BadStaticExample
{
    static Guid runId;
    static BadStaticExample()
    {
        runId  = Guid.NewGuid();
    }
    // Other members...
}

L'exemple de code suivant peut être optimisé.

Public Class GoodStaticExample
    Shared runId as Guid = Guid.NewGuid()
    ' Other members...
End Class
public class GoodStaticExample
{
    static Guid runId  = Guid.NewGuid();
    // Other members...
}

Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.

Portions Copyright Addison-Wesley Corporation. Tous droits réservés.

Pour plus d'informations sur les instructions de conception, consultez le livre « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries » de Krzysztof Cwalina et Brad Abrams, publié par Addison-Wesley, 2005.

Voir aussi

Concepts

Conception de constructeurs

Autres ressources

Instructions de conception des membres

Instructions de conception pour le développement de bibliothèques de classes