En tant que nouveau venu en C#, naviguer dans des bases de code qui utilisent fortement les énumérations peut être difficile, en particulier si vous avez une solide expérience en Java. . Cet article vise à démystifier les différences entre les énumérations C# et Java, vous permettant ainsi de combler le fossé et d'exploiter tout le potentiel des énumérations C#.
Pour illustrer l'application pratique des énumérations et des méthodes d'extension C#, voyons plongez dans l'exemple emblématique de l'énumération Planet utilisé dans la documentation Java de Sun.
<code class="csharp">using System; 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 } public static class Planets { public static double GetSurfaceGravity(this Planet p) { return G * GetMass(p) / (GetRadius(p) * GetRadius(p)); } public static double GetSurfaceWeight(this Planet p, double otherMass) { return otherMass * p.GetSurfaceGravity(); } public const double G = 6.67300E-11; private static double GetMass(Planet p) => GetAttr(p).Mass; private static double GetRadius(Planet p) => GetAttr(p).Radius; private static PlanetAttr GetAttr(Planet p) => (PlanetAttr)Attribute.GetCustomAttribute(ForValue(p), typeof(PlanetAttr)); private static MemberInfo ForValue(Planet p) => typeof(Planet).GetField(Enum.GetName(typeof(Planet), p)); }</code>
Dans cette implémentation C# :
En utilisant les méthodes d'extension de C#, vous pouvez étendre la fonctionnalité des énumérations pour répondre aux cas d'utilisation précédemment traités par l'implémentation d'énumération plus robuste de Java. Cela permet une transition en douceur et un codage efficace en C#.
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!