Heim > Backend-Entwicklung > C++ > Java vs. C#-Enums: Wie schließen Erweiterungsmethoden die Lücke?

Java vs. C#-Enums: Wie schließen Erweiterungsmethoden die Lücke?

Patricia Arquette
Freigeben: 2025-01-12 07:34:46
Original
842 Leute haben es durchsucht

Java vs. C# Enums: How Do Extension Methods Bridge the Gap?

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

  • Methodenunterstützung: Java-Enums unterstützen das Definieren von Methoden, was C#-Enums traditionell nicht tun.

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>
Nach dem Login kopieren

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!

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