Java 및 C#의 열거형 시작 가이드
Java에서 C#으로 전환하는 개발자는 C#의 열거형이 Java 구현보다 더 단순해 보일 수 있습니다. Java와 C# 열거형의 차이점과 이를 극복하는 방법을 살펴보겠습니다.
주요 차이점
차이를 극복하기 위해 확장 방법을 사용
C#에서는 열거형 확장 메서드를 만들어 surfaceGravity()
및 surfaceWeight()
과 같은 메서드를 추가할 수 있습니다. 예:
<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>
이 코드를 사용하면 각 Planet
열거형 값의 GetSurfaceGravity()
메서드에 액세스할 수 있습니다.
요약
Java 열거형은 더 많은 내장 기능을 제공하는 반면 C# 열거형은 확장 메서드를 통해 더 큰 유연성을 제공합니다. 메소드 확장을 구현하면 Java 열거형의 기능을 복제하고 특정 요구 사항에 맞게 열거형을 사용자 정의할 수 있습니다.
위 내용은 Java 대 C# 열거형: 확장 메서드는 어떻게 격차를 해소합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!