>  기사  >  Java  >  C#으로 전환하는 Java 개발자를 위한 C# 열거형은 Java 열거형과 어떻게 비교됩니까?

C#으로 전환하는 Java 개발자를 위한 C# 열거형은 Java 열거형과 어떻게 비교됩니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-02 03:38:02250검색

How do C# enums compare to Java enums for a Java developer transitioning to C#?

C# 초보자를 위한 C#과 Java 열거형

숙련된 Java 개발자로서 C#으로 전환하려면 다음과 같은 몇 가지 조정이 필요할 수 있습니다. 열거형. C#과 Java 열거형 간의 차이점과 이에 적응하는 방법을 살펴보겠습니다.

Java에서 열거형은 사용자 정의 메서드와 필드를 허용합니다. 반면에 C#은 더 간단한 열거형 구현을 제공합니다. 그러나 C#에서는 이러한 제한을 극복하기 위한 솔루션으로 확장 메서드를 도입합니다.

확장 메서드를 사용하면 기존 형식을 수정하지 않고도 기존 형식에 기능을 추가할 수 있습니다. 예를 들어, Planet 열거형에 대한 확장 메서드를 생성하여 Java의 SurfaceGravity() 및 SurfaceWeight() 메서드를 모방할 수 있습니다.

사용자 정의 속성은 열거형 확장을 위한 또 다른 접근 방식을 제공합니다. PlanetAttr 속성을 추가하여 각 행성의 질량 및 반경 속성을 정의하면 확장 메서드에서 해당 값에 액세스할 수 있습니다.

다음은 확장 메서드와 사용자 정의 속성을 활용하여 유명한 Planet 열거형 예제를 C#으로 구현한 것입니다. :

<code class="c#">using System;
using System.Reflection;

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 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));
    }

}

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>

이 구현을 사용하면 행성 속성에 액세스하고 Java 예제에서와 같이 표면 중력과 무게를 계산할 수 있습니다. 이러한 차이점을 이해하고 확장 메소드 및 사용자 정의 속성과 같은 C#의 강력한 기능을 수용함으로써 Java에서 C#으로의 전환이 원활하고 효율적인 프로세스가 됩니다.

위 내용은 C#으로 전환하는 Java 개발자를 위한 C# 열거형은 Java 열거형과 어떻게 비교됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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