C# 및 Java 열거: 차이 분석
Java에서 C#으로 전환하는 개발자의 경우 두 언어의 열거형 간의 차이점을 이해하는 것이 중요합니다. C# 열거형은 보기에는 깔끔해 보이지만 처음에는 Java의 일부 고급 기능이 부족합니다.
주요 차이점
차이 해소
C#의 Java Planet 열거 예제
다음 C# 코드는 확장 메서드 및 사용자 정의 속성을 포함하여 Sun's Planet 열거형의 동등한 구현을 보여줍니다.
<code class="language-csharp">using System; using System.Reflection; namespace PlanetEnum { 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 GetSurfaceWeight(this Planet p, double otherMass) { return otherMass * p.GetSurfaceGravity(); } public const 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)); } } [AttributeUsage(AttributeTargets.Field)] public class PlanetAttr : Attribute { public PlanetAttr(double mass, double radius) { Mass = mass; Radius = radius; } public double Mass { get; private set; } public double Radius { get; private set; } } public enum Planet { [PlanetAttr(3.303e+23, 2.4397e6)] MERCURY, [PlanetAttr(4.869e+24, 6.0518e6)] VENUS, [PlanetAttr(5.976e+24, 6.37814e6)] EARTH, [PlanetAttr(6.421e+23, 3.3972e6)] MARS, [PlanetAttr(1.9e+27, 7.1492e7)] JUPITER, [PlanetAttr(5.688e+26, 6.0268e7)] SATURN, [PlanetAttr(8.686e+25, 2.5559e7)] URANUS, [PlanetAttr(1.024e+26, 2.4746e7)] NEPTUNE, [PlanetAttr(1.27e+22, 1.137e6)] PLUTO } }</code>
이 코드는 확장 메소드와 사용자 정의 속성을 사용하여 추가 기능으로 C# 열거형을 확장하고 Java 열거형과의 격차를 효과적으로 메우는 방법을 보여줍니다.
위 내용은 C# 및 Java 열거형: Java에서와 같이 C# 열거형에 기능을 어떻게 추가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!