Maison > développement back-end > C++ > Pourquoi les énumérations C# peuvent-elles avoir des valeurs entières non uniques et quand dois-je éviter cela ?

Pourquoi les énumérations C# peuvent-elles avoir des valeurs entières non uniques et quand dois-je éviter cela ?

Barbara Streisand
Libérer: 2024-12-30 01:19:11
original
542 Les gens l'ont consulté

Why Can C# Enums Have Non-Unique Integer Values, and When Should I Avoid This?

Valeurs d'énumération non uniques

Question :

Pourquoi C# autorise-t-il plusieurs valeurs d'énumération se voir attribuer la même valeur entière sous-jacente ? Est-il sûr d'utiliser des énumérations à cette fin, ou faut-il utiliser des structures à la place ?

Réponse :

Contrairement à la croyance populaire, une énumération en C# n'est pas spéciale tapez mais une structure qui dérive de System.Enum. Lorsque vous déclarez une énumération, le compilateur génère une structure avec des constantes nommées pour les valeurs de l'énumération.

Votre définition d'énumération :

public enum Color
{
    Red = 1,
    Blue = 1,
    Green = 1
}
Copier après la connexion

Est traduite en :

public struct Color : System.Enum
{
    public const int Red = 1;
    public const int Blue = 1;
    public const int Green = 1;
}
Copier après la connexion

Étant donné que les structures peuvent avoir plusieurs constantes avec la même valeur, il est possible de définir des énumérations avec des valeurs non uniques. Cependant, cela peut entraîner des incohérences lors de la conversion en énumérations :

Color color1 = (Color)1; // Returns Red
Color color2 = (Color)Enum.Parse(typeof(Color), "1"); // Also returns Red
Copier après la connexion

La comparaison Color.Red == Color.Green sera également évaluée à true, ce qui peut prêter à confusion.

Bien qu'il est légal d'utiliser des énumérations avec des valeurs non uniques, il est recommandé de ne les utiliser que lorsque cela a du sens. Si vous avez besoin de valeurs uniques, envisagez d'utiliser une structure ou un dictionnaire à la place.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal