Guide de démarrage des énumérations en Java et C#
Les développeurs passant de Java à C# peuvent trouver que les énumérations de C# semblent plus simples que l'implémentation de Java. Explorons les différences entre les énumérations Java et C# et comment les surmonter.
Principales différences
Utilisez des méthodes d'extension pour surmonter les différences
En C#, vous pouvez créer des méthodes d'extension pour les énumérations afin d'ajouter des méthodes telles que surfaceGravity()
et surfaceWeight()
. Par exemple :
<code class="language-csharp">using System; class PlanetAttr : Attribute { internal PlanetAttr(double mass, double radius) { this.Mass = mass; this.Radius = radius; } public double Mass { get; private set; } public double Radius { get; private set; } } 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 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)); } } public enum Planet { [PlanetAttr(3.303e+23, 2.4397e6)] MERCURY, // ... other planets }</code>
Avec ce code, vous pouvez accéder aux Planet
méthodes de chaque GetSurfaceGravity()
valeur d'énumération.
Résumé
Alors que les énumérations Java offrent davantage de fonctionnalités intégrées, les énumérations C# offrent une plus grande flexibilité grâce aux méthodes d'extension. En implémentant des extensions de méthode, vous pouvez répliquer les fonctionnalités d'une énumération Java et personnaliser l'énumération en fonction de vos besoins spécifiques.
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!