C# 与 Java 枚举:比较指南
如果您从 Java 过渡到 C#,您可能会注意到枚举方式上的一些差异已实施。虽然 C# 枚举最初看起来更简单,但它们通过扩展方法和自定义属性提供了明显的优势。
主要区别
具有扩展方法和自定义属性的示例
我们可以为行星定义一个枚举,并为 GetSurfaceGravity() 和 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); ... } ... }
然后我们可以使用这些扩展方法来执行类似于 Java 示例的计算:
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));
此示例演示如何创建具有与 Java 实现非常相似的增强功能的 C# 枚举。
以上是如何使用扩展方法和自定义属性来增强 C# 枚举以模仿 Java 枚举功能?的详细内容。更多信息请关注PHP中文网其他相关文章!