>백엔드 개발 >C++ >Java 대 C# 열거형: 확장 메서드는 어떻게 격차를 해소합니까?

Java 대 C# 열거형: 확장 메서드는 어떻게 격차를 해소합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-12 07:34:46845검색

Java vs. C# Enums: How Do Extension Methods Bridge the Gap?

Java 및 C#의 열거형 시작 가이드

Java에서 C#으로 전환하는 개발자는 C#의 열거형이 Java 구현보다 더 단순해 보일 수 있습니다. Java와 C# 열거형의 차이점과 이를 극복하는 방법을 살펴보겠습니다.

주요 차이점

  • 메서드 지원: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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