Erste Schritte zu Aufzählungen in Java und C#
Entwickler, die von Java auf C# umsteigen, stellen möglicherweise fest, dass die Aufzählungen von C# einfacher zu sein scheinen als die Implementierung von Java. Lassen Sie uns die Unterschiede zwischen Java- und C#-Aufzählungen untersuchen und wie Sie diese überwinden können.
Hauptunterschiede
Verwenden Sie Erweiterungsmethoden, um Unterschiede zu überwinden
In C# können Sie Erweiterungsmethoden für Aufzählungen erstellen, um Methoden wie surfaceGravity()
und surfaceWeight()
hinzuzufügen. Zum Beispiel:
<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>
Mit diesem Code können Sie auf die Planet
Methoden jedes GetSurfaceGravity()
Aufzählungswerts zugreifen.
Zusammenfassung
Während Java-Enums mehr integrierte Funktionalität bieten, bieten C#-Enums durch Erweiterungsmethoden eine größere Flexibilität. Durch die Implementierung von Methodenerweiterungen können Sie die Funktionalität einer Java-Enumeration replizieren und die Enumeration an Ihre spezifischen Anforderungen anpassen.
Das obige ist der detaillierte Inhalt vonJava vs. C#-Enums: Wie schließen Erweiterungsmethoden die Lücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!