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 ?
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 }
Est traduite en :
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
É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
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
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!