C#을 처음 접하는 사람으로서 열거형을 많이 활용하는 코드베이스를 탐색하는 것은 어려울 수 있으며, 특히 강력한 Java 배경 지식을 갖춘 사람이라면 더욱 그렇습니다. . 이 문서의 목적은 C#과 Java 열거형 간의 차이점을 이해하여 격차를 해소하고 C# 열거형의 잠재력을 최대한 활용할 수 있도록 하는 것입니다.
C# 열거형 및 확장 메서드의 실제 적용을 설명하기 위해 다음을 살펴보겠습니다. Sun의 Java 문서에 사용된 상징적인 Planet 열거형 예제를 자세히 살펴보세요.
<code class="csharp">using System; 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 } public static class Planets { public static double GetSurfaceGravity(this Planet p) { return G * GetMass(p) / (GetRadius(p) * GetRadius(p)); } public static double GetSurfaceWeight(this Planet p, double otherMass) { return otherMass * p.GetSurfaceGravity(); } public const double G = 6.67300E-11; private static double GetMass(Planet p) => GetAttr(p).Mass; private static double GetRadius(Planet p) => GetAttr(p).Radius; private static PlanetAttr GetAttr(Planet p) => (PlanetAttr)Attribute.GetCustomAttribute(ForValue(p), typeof(PlanetAttr)); private static MemberInfo ForValue(Planet p) => typeof(Planet).GetField(Enum.GetName(typeof(Planet), p)); }</code>
이 C# 구현에서는 다음을 수행합니다.
C#의 확장 메서드를 활용하면 열거형의 기능을 확장하여 이전에 Java의 보다 강력한 열거형 구현으로 처리했던 사용 사례를 처리할 수 있습니다. 이를 통해 C#에서 원활한 전환과 효과적인 코딩이 가능합니다.
위 내용은 C#과 Java 열거형은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!