Heim > Java > javaLernprogramm > Hauptteil

Wie können C#-Enums mit Erweiterungsmethoden und benutzerdefinierten Attributen erweitert werden, um die Java-Enum-Funktionalität nachzuahmen?

Linda Hamilton
Freigeben: 2024-11-02 07:20:29
Original
834 Leute haben es durchsucht

How can C# Enums be Enhanced with Extension Methods and Custom Attributes to Mimic Java Enum Functionality?

C# vs. Java-Aufzählungen: Ein Vergleichsleitfaden

Wenn Sie von Java auf C# umsteigen, werden Ihnen möglicherweise einige Unterschiede in der Art und Weise der Aufzählungen auffallen werden umgesetzt. Während C#-Aufzählungen zunächst einfacher erscheinen, bieten sie durch Erweiterungsmethoden und benutzerdefinierte Attribute deutliche Vorteile.

Hauptunterschiede

  • Erweiterungsmethoden: In C# können Sie Aufzählungen um zusätzliche Funktionen erweitern, einschließlich benutzerdefinierter Methoden und Eigenschaften. Dies gleicht das Fehlen integrierter Methoden wie surfaceGravity() und surfaceWeight() in der Java-Enum-Implementierung aus.
  • Benutzerdefinierte Attribute: Mit C# können Sie benutzerdefinierte Attribute an Enums anhängen und so Folgendes bereitstellen eine Möglichkeit, zusätzliche Metadaten zu speichern. Dies kann genutzt werden, um die Felder und Methoden von Java-Enums effektiv zu emulieren, wie im folgenden Beispiel gezeigt.

Beispiel mit Erweiterungsmethoden und benutzerdefinierten Attributen

Wir können eine Enumeration für Planeten definieren und Erweiterungsmethoden für GetSurfaceGravity() und hinzufügen GetSurfaceWeight():

public enum Planet
{
    [PlanetAttr(3.303e+23, 2.4397e6)]  MERCURY,
    [PlanetAttr(4.869e+24, 6.0518e6)]  VENUS,
    [PlanetAttr(5.976e+24, 6.37814e6)] EARTH,
    ...
}

public static class Planets
{
    public static double GetSurfaceGravity(this Planet p)
    {
        PlanetAttr attr = GetAttr(p);
        ...
    }
    ...
}
Nach dem Login kopieren

Wir können dann diese Erweiterungsmethoden verwenden, um Berechnungen ähnlich dem Java-Beispiel durchzuführen:

double earthWeight = Double.parseDouble(args[0]);
double mass = earthWeight/Planet.EARTH.GetSurfaceGravity();
for (Planet p : Planet.values())
    System.out.printf("Your weight on %s is %f%n", p, p.GetSurfaceWeight(mass));
Nach dem Login kopieren

Dieses Beispiel zeigt, wie eine C#-Aufzählung mit erweiterter Funktionalität erstellt wird das ähnelt stark der Java-Implementierung.

Das obige ist der detaillierte Inhalt vonWie können C#-Enums mit Erweiterungsmethoden und benutzerdefinierten Attributen erweitert werden, um die Java-Enum-Funktionalität nachzuahmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage