>  기사  >  Java  >  Java Enum 기능을 모방하기 위해 확장 메서드 및 사용자 정의 속성을 사용하여 C# Enum을 어떻게 향상시킬 수 있습니까?

Java Enum 기능을 모방하기 위해 확장 메서드 및 사용자 정의 속성을 사용하여 C# Enum을 어떻게 향상시킬 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 07:20:29773검색

How can C# Enums be Enhanced with Extension Methods and Custom Attributes to Mimic Java Enum Functionality?

C#과 Java 열거형: 비교 가이드

Java에서 C#으로 전환하는 경우 열거형이 어떻게 다른지 알 수 있습니다. 구현됩니다. C# 열거형은 처음에는 더 단순해 보이지만 확장 방법과 사용자 정의 속성을 통해 뚜렷한 이점을 제공합니다.

주요 차이점

  • 확장 방법: C#에서는 사용자 지정 메서드 및 속성을 포함한 추가 기능을 사용하여 열거형을 확장할 수 있습니다. 이는 Java 열거형 구현에 표면 중력() 및 표면 무게()와 같은 내장 메서드가 부족한 점을 보완합니다.
  • 사용자 정의 속성: C#을 사용하면 열거형에 사용자 정의 속성을 첨부할 수 있습니다. 추가 메타데이터를 저장하는 방법입니다. 이는 아래 예에서 볼 수 있듯이 Java 열거형의 필드와 메소드를 효과적으로 에뮬레이트하는 데 활용될 수 있습니다.

확장 메소드 및 사용자 정의 속성의 예

행성에 대한 열거형을 정의하고 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# 열거형을 생성하는 방법을 보여줍니다.

위 내용은 Java Enum 기능을 모방하기 위해 확장 메서드 및 사용자 정의 속성을 사용하여 C# Enum을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.