Enum, structure (System)

Bibliothèque de classes .NET Framework 
Enum, structure 

Fournit la classe de base pour les énumérations.

Espace de noms : System
Assembly : mscorlib (dans mscorlib.dll)

SyntaxeSyntaxe


Visual Basic (Déclaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Enum
    Inherits ValueType
    Implements IComparable, IFormattable, IConvertible


Visual Basic (Utilisation)
Dim instance As Enum


C#
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible


C++
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class Enum abstract : public ValueType, IComparable, IFormattable, IConvertible


J#
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Enum extends ValueType implements IComparable, IFormattable, 
    IConvertible


JScript
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Enum extends ValueType implements IComparable, IFormattable, 
    IConvertible
NotesNotes

Une énumération est une constante nommée dont le type sous-jacent peut être n'importe quel type entier à l'exception de Char. Si aucun type sous-jacent n'est explicitement déclaré, Int32 est utilisé. Les langages de programmation fournissent généralement la syntaxe permettant de déclarer une énumération composée de constantes nommées et de leurs valeurs.

Enum fournit les méthodes permettant de comparer les instances de cette classe, de convertir la valeur d'une instance en représentation sous forme de chaîne, de convertir la représentation sous forme de chaîne d'un nombre en une instance de cette classe et de créer une instance d'une énumération et d'une valeur spécifiées.

Vous pouvez aussi considérer une énumération comme un champ de bits. Pour plus d'informations, consultez FlagsAttribute.

Interfaces implémentées

Cette classe hérite de ValueType et implémente les interfaces IComparable, IFormattable et IConvertible. Pour les conversions, utilisez la classe Convert au lieu de l'implémentation du membre d'interface explicite de IConvertible de cette classe.

Indications concernant FlagsAttribute et Enum

  • Utilisez uniquement l'attribut personnalisé FlagsAttribute pour une énumération si une opération de bits (AND, OR, EXCLUSIVE OR) doit être exécutée sur une valeur numérique.

  • Définissez des constantes d'énumération à la puissance deux, soit 1, 2, 4, 8, et ainsi de suite. Cela signifie que les indicateurs individuels inclus dans des constantes d'énumération combinées ne se chevauchent pas.

  • Examinons la création d'une constante énumérée pour des combinaisons d'indicateurs couramment utilisées. Par exemple, si une énumération utilisée pour les opérations d'E/S de fichier contient les constantes énumérées Read = 1 et Write = 2, créez la constante énumérée ReadWrite = Read OR Write qui associe les indicateurs Read et Write. De plus, l'opération de bits OR utilisée pour combiner les indicateurs peut être considérée comme un concept avancé dans un contexte qui ne concerne pas les tâches simples.

  • Soyez prudent si vous définissez un nombre négatif comme constante énumérée d'indicateur, car la valeur 1 est souvent affectée aux positions d'indicateur, ce qui peut être source de confusion dans votre code, voire d'erreurs de codage.

  • Pour savoir si un indicateur a une valeur numérique, il suffit d'effectuer une opération de bits AND entre la valeur numérique et la constante énumérée d'indicateur qui affecte à tous les bits la valeur numérique zéro ne correspondant pas à l'indicateur, puis de tester si le résultat de cette opération est égal à la constante énumérée d'indicateur.

  • Utilisez None comme nom de la constante énumérée d'indicateur dont la valeur est nulle. Vous ne pouvez pas utiliser la constante énumérée None dans une opération de bits AND pour tester un indicateur, car le résultat est toujours nul. Toutefois, vous pouvez effectuer une comparaison logique (pas une comparaison de bits) entre la valeur numérique et la constante énumérée None pour déterminer si des bits de la valeur numérique sont définis.

    Si vous créez une énumération de valeurs au lieu d'une énumération d'indicateurs, il peut être utile de créer une constante énumérée None. En effet, par défaut, la mémoire utilisée pour l'énumération est initialisée à zéro par le Common Language Runtime. Par conséquent, si vous n'affectez pas la valeur null à une constante, l'énumération contiendra une valeur non valide lorsqu'elle sera créée.

    Si votre application doit représenter un cas par défaut évident, utilisez une constante énumérée dont la valeur est nulle pour représenter la valeur par défaut. S'il n'y a aucun cas par défaut, utilisez plutôt une constante énumérée dont la valeur est nulle, c'est-à-dire le cas qui n'est représenté par aucune autre constante énumérée.

  • Ne définissez pas uniquement une valeur d'énumération pour refléter l'état de l'énumération elle-même. Par exemple, ne définissez pas une constante énumérée qui marque simplement la fin de l'énumération. Si vous devez déterminer la dernière valeur de l'énumération, vérifiez explicitement cette valeur. De plus, vous pouvez exécuter un contrôle de plage pour la première et dernière constante énumérée si toutes les valeurs dans la plage sont valides.

  • Ne spécifiez pas de constantes énumérées en vue d'une utilisation future.

  • Lorsque vous définissez une méthode ou une propriété qui utilise une constante énumérée comme une valeur, pensez à valider la valeur. En effet, vous pouvez caster une valeur numérique en type énumération, même si cette valeur numérique n'est pas définie dans l'énumération.

ExempleExemple

L'exemple de code suivant illustre l'utilisation d'une énumération pour représenter des valeurs nommées et d'une autre énumération pour représenter des champs de bits nommés.



Visual Basic
Imports System

Public Class EnumTest
    
    Enum Days
        Saturday
        Sunday
        Monday
        Tuesday
        Wednesday
        Thursday
        Friday
    End Enum 'Days
    
    Enum BoilingPoints
        Celcius = 100
        Fahrenheit = 212
    End Enum 'BoilingPoints
    
    <FlagsAttribute()> _
    Enum Colors
        Red = 1
        Green = 2
        Blue = 4
        Yellow = 8
    End Enum 'Colors

    Public Shared Sub Main()
        Dim weekdays As Type = GetType(Days)
        Dim boiling As Type = GetType(BoilingPoints)

        Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:")

        Dim s As String
        For Each s In  [Enum].GetNames(weekdays)
            Console.WriteLine("{0,-11} = {1}", s, [Enum].Format(weekdays, [Enum].Parse(weekdays, s), "d"))
        
        Next s
        Console.WriteLine()
        Console.WriteLine("Enums can also be created which have values that represent some meaningful amount.")
        Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:")

        For Each s In  [Enum].GetNames(boiling)
            Console.WriteLine("{0,-11} = {1}", s, [Enum].Format(boiling, [Enum].Parse(boiling, s), "d"))
        Next s

        Dim myColors As Colors = Colors.Red Or Colors.Blue Or Colors.Yellow
        Console.WriteLine()
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors)
    End Sub 'Main
End Class 'EnumTest


C#
using System;

public class EnumTest {
    enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
    enum BoilingPoints { Celcius = 100, Fahrenheit = 212 };
    [FlagsAttribute]
    enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

    public static void Main() {

        Type weekdays = typeof(Days);
        Type boiling = typeof(BoilingPoints);

        Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:");

        foreach ( string s in Enum.GetNames(weekdays) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format( weekdays, Enum.Parse(weekdays, s), "d"));

        Console.WriteLine();
        Console.WriteLine("Enums can also be created which have values that represent some meaningful amount.");
        Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:");

        foreach ( string s in Enum.GetNames(boiling) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format(boiling, Enum.Parse(boiling, s), "d"));

        Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow;
        Console.WriteLine();
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors);
    }
}


C++
using namespace System;
enum class Days
{
   Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday
};

enum class BoilingPoints
{
   Celcius = 100,
   Fahrenheit = 212
};

[FlagsAttribute]

enum class Colors
{
   Red = 1,
   Green = 2,
   Blue = 4,
   Yellow = 8
};

int main()
{
   Type^ weekdays = Days::typeid;
   Type^ boiling = BoilingPoints::typeid;
   Console::WriteLine(  "The days of the week, and their corresponding values in the Days Enum are:" );
   Array^ a = Enum::GetNames( weekdays );
   Int32 i = 0;
   do
   {
      Object^ o = a->GetValue( i );
      Console::WriteLine(  "{0,-11}= {1}", o->ToString(), Enum::Format( weekdays, Enum::Parse( weekdays, o->ToString() ),  "d" ) );
   }
   while ( ++i < a->Length );

   Console::WriteLine();
   Console::WriteLine(  "Enums can also be created which have values that represent some meaningful amount." );
   Console::WriteLine(  "The BoilingPoints Enum defines the following items, and corresponding values:" );
   i = 0;
   Array^ b = Enum::GetNames( boiling );
   do
   {
      Object^ o = b->GetValue( i );
      Console::WriteLine(  "{0,-11}= {1}", o->ToString(), Enum::Format( boiling, Enum::Parse( boiling, o->ToString() ),  "d" ) );
   }
   while ( ++i < b->Length );

   Array^ c = Enum::GetNames( Colors::typeid );
   Colors myColors = Colors::Red | Colors::Blue | Colors::Yellow;
   Console::WriteLine();
   Console::Write(  "myColors holds a combination of colors. Namely:" );
   for ( i = 0; i < 3; i++ )
      Console::Write(  " {0}", c->GetValue( i ) );
}


J#
import System.*;

public class EnumTest
{
    enum Days
    {
        saturday (0),
        sunday (1),
        monday (2),
        tuesday (3),
        wednesday (4),
        thursday (5),
        friday (6);
    } //Days

    enum BoilingPoints
    {
        celsius (100),
        fahrenheit (212);
    } //BoilingPoints

    /** @attribute FlagsAttribute()
     */
    enum Colors
    {
        red (1),
        green (2),
        blue (4),
        yellow (8);
    } //Colors

    public static void main(String[] args)
    {
        Type weekdays = Days.class.ToType();
        Type boiling = BoilingPoints.class.ToType();

        Console.WriteLine("The days of the week, and their corresponding"
            + " values in the Days Enum are:");
        String s[] = Enum.GetNames(weekdays);
        for (int iCtr = 0; iCtr < s.length; iCtr++) {
            Console.WriteLine("{0,-11}= {1}", s[iCtr],
                Enum.Format(weekdays, Enum.Parse(weekdays, s[iCtr]), "d"));
        }

        Console.WriteLine();
        Console.WriteLine("Enums can also be created which have values that"
            + " represent some meaningful amount.");
        Console.WriteLine("The BoilingPoints Enum defines the following items,"
            + " and corresponding values:");
        String s1[] = Enum.GetNames(boiling);
        for (int iCtr = 0; iCtr < s1.length; iCtr++) {
            Console.WriteLine("{0,-11}= {1}", s1[iCtr], 
                Enum.Format(boiling, Enum.Parse(boiling, s1[iCtr]), "d"));
        }
        Colors myColors = Colors.red | Colors.blue | Colors.yellow;
        Console.WriteLine();
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}",
            myColors);
    } //main
} //EnumTest


JScript
import System;

public class EnumTest {
    enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
    enum BoilingPoints { Celcius = 100, Fahrenheit = 212 };
    FlagsAttribute
    enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

    public static function Main() {

        var weekdays : Type = Days;
        var boiling : Type = BoilingPoints;

        Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:");

        for( var i : int in Enum.GetNames(weekdays) )
            Console.WriteLine( "{0,-11}= {1}", Enum.GetNames(weekdays).GetValue(i), 
            Enum.Format( weekdays, Enum.Parse(weekdays, Enum.GetNames(weekdays).GetValue(i)), "d"));

        Console.WriteLine();
        Console.WriteLine("Enums can also be created which have values that represent some meaningful amount.");
        Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:");

        for ( var j : int in Enum.GetNames(boiling) )
            Console.WriteLine( "{0,-11}= {1}", Enum.GetNames(boiling).GetValue(j), 
            Enum.Format(boiling, Enum.Parse(boiling, Enum.GetNames(boiling).GetValue(j)), "d"));

        var myColors : Colors = Colors.Red | Colors.Blue | Colors.Yellow;
        Console.WriteLine();
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors);
    }
}
Sécurité des threadsSécurité des threads

Ce type est sécurisé pour les opérations multithread.

Plates-formesPlates-formes

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

Informations de versionInformations de version

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Voir aussiVoir aussi

Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/system.enum.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

7 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-6846
Document créé le 07/11/06 04:49, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-system.enum.html Document affiché 9 fois ce mois de Mai.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,52 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Nos désirs sont les pressentiments des possibilités qui sont en nous.

Goethe
 
l'infobrol
Nous sommes le Jeudi 31 Mai 2012, 23:18, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)