ホームページ >バックエンド開発 >C++ >開発者が切り替える場合、C# 列挙型と Java 列挙型はどのように比較できますか?

開発者が切り替える場合、C# 列挙型と Java 列挙型はどのように比較できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-12 06:30:41658ブラウズ

How Do C# Enums Compare to Java Enums for Developers Making the Switch?

C# と Java Enum: Java から C# に移行する開発者向けの比較

Java から C# に移行するプログラマーにとって、2 つの言語の列挙機能の違いを理解することが重要です。 C# 列挙は、最初は Java 列挙よりも単純に見えますが、同じまたはさらに強力な結果を達成するために使用できる独自の機能を提供します。

主な違い:

  • 拡張メソッド: C# では、列挙型に対して拡張メソッドを作成し、元の定義を変更せずにその機能を拡張できます。これにより、surfaceGravity() や surfaceWeight() などのメソッドを Planet 列挙に追加できるようになります。

C# で Java の Planet 列挙型をコピーします:

C# では、Planet 列挙を定義し、カスタム プロパティまたは辞書を使用して同等の拡張メソッドを実装できます。

カスタム属性メソッド:

<code class="language-c#">[PlanetAttr(3.303e+23, 2.4397e6)]
public enum Planet
{
    MERCURY,
    VENUS,
    EARTH,
    // ... 其他行星
}</code>

カスタムの PlanetAttr 属性には、各惑星の質量と半径が保存されます。

拡張メソッド:

<code class="language-c#">public static class Planets
{
    public static double GetSurfaceGravity(this Planet p)
    {
        // 使用自定义属性获取行星属性
        PlanetAttr attr = GetAttr(p);
        return G * attr.Mass / (attr.Radius * attr.Radius);
    }

    // ... 其他扩展方法
}</code>

辞書メソッド:

<code class="language-c#">private static readonly Dictionary<Planet, double[]> planetData = new Dictionary<Planet, double[]>
{
    { Planet.MERCURY, new double[] { 3.303e+23, 2.4397e6 } },
    // ... 其他行星
};</code>

辞書を使用すると、カスタム属性メソッドと同様に質量と半径の値を取得し、表面重力を計算できます。

拡張メソッドや辞書を利用すると、Java 列挙型と同じ機能を C# で実装でき、コードと概念をシームレスに移行できます。

以上が開発者が切り替える場合、C# 列挙型と Java 列挙型はどのように比較できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。