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
Libérer: 2025-01-12 07:34:46
original
842 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal