Maison >développement back-end >C++ >Énumérations Java vs C# : comment les méthodes d'extension comblent-elles le fossé ?

Énumérations Java vs C# : comment les méthodes d'extension comblent-elles le fossé ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 07:34:46908parcourir

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

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

  • Prise en charge des méthodes : Les énumérations Java prennent en charge la définition de méthodes, ce que les énumérations C# ne font généralement pas.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn