Constantes (Guide de programmation C#)

Les constantes sont des valeurs immuables qui sont connues au moment de la compilation et ne changent pas pendant la durée de vie du programme. Les constantes sont déclarées avec le modificateur const. Seuls les types intégrés C# (à l'exclusion de System.Object) peuvent être déclarés comme const. Pour obtenir une liste des types intégrés, consultez Tableau des types intégrés (référence C#). Les types définis par l'utilisateur, y compris les classes, les structs et les tableaux, ne peuvent pas être const. Utilisez le modificateur readonly pour créer une classe, un struct ou un tableau initialisé une fois au moment de l'exécution (par exemple dans un constructeur) et qui ne peut pas être modifié ultérieurement.

C# ne prend pas en charge les méthodes, les propriétés ou les événements const.

Le type enum vous permet de définir des constantes nommées pour les types intégrés intégraux (par exemple int, uint, long, et ainsi de suite). Pour plus d'informations, consultez enum (référence C#).

Les constantes doivent être initialisées à mesure qu'elles sont déclarées. Par exemple :

class Calendar1
{
    public const int months = 12;
}

Dans cet exemple, la constante months est toujours 12 et ne peut pas être modifiée, même par la classe elle-même. En fait, lorsque le compilateur rencontre un identificateur constant dans du code source C# (par exemple, months), il substitue la valeur littérale directement dans le code IL (Intermediate Language) qu'il produit. Étant donné qu'il n'y a aucune adresse de variable associée à une constante au moment de l'exécution, les champs const ne peuvent pas être passés par référence et ne peuvent pas apparaître comme l-value dans une expression.

Notes

Procédez avec caution lorsque vous faites référence à des valeurs constantes définies dans un autre code, telles que des DLL. Si une nouvelle version de la DLL définit une nouvelle valeur pour la constante, votre programme conserve l'ancienne valeur littérale jusqu'à ce qu'elle soit recompilée contre la nouvelle version.

Plusieurs constantes du même type peuvent être déclarées en même temps, par exemple :

class Calendar2
{
    const int months = 12, weeks = 52, days = 365;
}

L'expression qui est utilisée pour initialiser une constante peut faire référence à une autre constante si elle ne crée pas de référence circulaire. Par exemple :

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

Les constantes peuvent être marquées comme étant publiques, privées, protégées, internes ou protected internal. Ces modificateurs d'accès définissent comment les utilisateurs de la classe peuvent accéder à la constante. Pour plus d'informations, consultez Modificateurs d'accès (Guide de programmation C#).

Les constantes sont accédées comme s'il s'agissait de champs statiques car la valeur de la constante est identique pour toutes les instances du type. Vous n'utilisez pas le mot clé static pour les déclarer. Les expressions qui ne sont pas dans la classe qui définit la constante doivent utiliser le nom de la classe, un point et le nom de la constante pour accéder à la constante. Par exemple :

int birthstones = Calendar.months;

Spécification du langage C#

Pour plus d'informations, consultez la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Classes et structs (Guide de programmation C#)

Propriétés (Guide de programmation C#)

Types (Guide de programmation C#)

readonly (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Immuabilité en C# Première partie : types d'immuabilité