Maison >développement back-end >C++ >Énumérations C# ou Java : comment ajouter des fonctionnalités aux énumérations C# comme en Java ?
Énumérations C# et Java : analyse des différences
Pour les développeurs passant de Java à C#, il est essentiel de comprendre les différences entre les énumérations dans les deux langages. Bien que les énumérations C# semblent plus propres, elles manquent initialement de certaines fonctionnalités avancées de Java.
Principales différences
Combler les différences
Exemple d'énumération Java Planet en C#
Le code C# suivant démontre une implémentation équivalente de l'énumération Sun's Planet, y compris les méthodes d'extension et les attributs personnalisés :
<code class="language-csharp">using System; using System.Reflection; namespace PlanetEnum { public static class Planets { public static double GetSurfaceGravity(this Planet p) { PlanetAttr attr = GetAttr(p); return G * attr.Mass / (attr.Radius * attr.Radius); } public static double GetSurfaceWeight(this Planet p, double otherMass) { return otherMass * p.GetSurfaceGravity(); } public const double G = 6.67300E-11; private static PlanetAttr GetAttr(Planet p) { return (PlanetAttr)Attribute.GetCustomAttribute(ForValue(p), typeof(PlanetAttr)); } private static MemberInfo ForValue(Planet p) { return typeof(Planet).GetField(Enum.GetName(typeof(Planet), p)); } } [AttributeUsage(AttributeTargets.Field)] public class PlanetAttr : Attribute { public PlanetAttr(double mass, double radius) { Mass = mass; Radius = radius; } public double Mass { get; private set; } public double Radius { get; private set; } } public enum Planet { [PlanetAttr(3.303e+23, 2.4397e6)] MERCURY, [PlanetAttr(4.869e+24, 6.0518e6)] VENUS, [PlanetAttr(5.976e+24, 6.37814e6)] EARTH, [PlanetAttr(6.421e+23, 3.3972e6)] MARS, [PlanetAttr(1.9e+27, 7.1492e7)] JUPITER, [PlanetAttr(5.688e+26, 6.0268e7)] SATURN, [PlanetAttr(8.686e+25, 2.5559e7)] URANUS, [PlanetAttr(1.024e+26, 2.4746e7)] NEPTUNE, [PlanetAttr(1.27e+22, 1.137e6)] PLUTO } }</code>
Ce code montre comment utiliser les méthodes d'extension et les attributs personnalisés pour étendre les énumérations C# avec des fonctionnalités supplémentaires, comblant ainsi efficacement le fossé avec les énumérations Java.
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!