C#과 Java 열거형: C# 초보자를 위한 차이점 명확화
Java에서 C#으로 마이그레이션할 때 열거형 구현의 차이점을 발견할 수 있습니다. C# 열거형은 언뜻 보면 더 단순해 보일 수 있지만 해당 기능을 효과적으로 활용하려면 차이점을 이해하는 것이 중요합니다.
C#과 Java 열거형의 차이점
차이 극복
Java와 C# 열거형 간의 격차를 해소하려면 다음을 고려하세요.
행성 예제를 C#으로 동일하게 구현
Java에서 Planet 열거형의 기능을 에뮬레이트하려면 다음과 같이 C#에서 사용자 정의 속성과 확장 메서드를 구현할 수 있습니다.
<code class="language-csharp">using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace Planets { [AttributeUsage(AttributeTargets.Field)] public class PlanetAttribute : Attribute { public double Mass { get; set; } public double Radius { get; set; } } public enum Planet { [PlanetAttribute(3.303e+23, 2.4397e6)] Mercury, [PlanetAttribute(4.869e+24, 6.0518e6)] Venus, [PlanetAttribute(5.976e+24, 6.37814e6)] Earth, [PlanetAttribute(6.421e+23, 3.3972e6)] Mars, [PlanetAttribute(1.9e+27, 7.1492e7)] Jupiter, [PlanetAttribute(5.688e+26, 6.0268e7)] Saturn, [PlanetAttribute(8.686e+25, 2.5559e7)] Uranus, [PlanetAttribute(1.024e+26, 2.4746e7)] Neptune, [PlanetAttribute(1.27e+22, 1.137e6)] Pluto } public static class PlanetExtensions { public static double SurfaceGravity(this Planet planet) { PlanetAttribute attribute = GetAttribute<PlanetAttribute>(planet); return GetG() * attribute.Mass / (attribute.Radius * attribute.Radius); } public static double SurfaceWeight(this Planet planet, double mass) { return mass * planet.SurfaceGravity(); } private static double GetG() => 6.67300E-11; private static T GetAttribute<T>(Planet planet) where T : Attribute { FieldInfo fieldInfo = typeof(Planet).GetField(planet.ToString()); return fieldInfo.GetCustomAttribute<T>(); } } public class Program { public static void Main(string[] args) { double earthWeight = 175; double mass = earthWeight / Planet.Earth.SurfaceGravity(); Console.WriteLine($"Weight on each planet (mass = {mass}):"); foreach (Planet planet in Enum.GetValues<Planet>()) { Console.WriteLine($"{planet}: {planet.SurfaceWeight(mass)}"); } } } }</code>
이 업데이트된 예에서는 사용자 정의 속성을 사용하여 행성 데이터를 저장하는 방법과 확장 메서드를 사용하여 SurfaceGravity() 및 SurfaceWeight() 함수를 구현하는 방법을 보여 주며 Java Planet 열거형에 해당하는 C#을 제공합니다.
위 내용은 C#과 Java 열거형: 주요 차이점은 무엇이며 Java에서 C#으로 효과적으로 마이그레이션하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!