Home >Backend Development >C++ >Java vs. C# Enums: How Do Extension Methods Bridge the Gap?
Getting Started Guide to Enumerations in Java and C#
Developers moving from Java to C# may find that C#'s enumerations seem to be simpler than Java's implementation. Let’s explore the differences between Java and C# enumerations and how to overcome them.
Main Differences
Use extension methods to overcome differences
In C#, you can create extension methods for enumerations to add methods such as surfaceGravity()
and surfaceWeight()
. For example:
<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>
With this code, you can access the Planet
methods of each GetSurfaceGravity()
enumeration value.
Summary
While Java enums offer more built-in functionality, C# enums offer greater flexibility through extension methods. By implementing method extensions, you can replicate the functionality of a Java enumeration and customize the enumeration to your specific needs.
The above is the detailed content of Java vs. C# Enums: How Do Extension Methods Bridge the Gap?. For more information, please follow other related articles on the PHP Chinese website!