Rumah > Java > javaTutorial > Bagaimanakah C# dan Java Enums Berbeza?

Bagaimanakah C# dan Java Enums Berbeza?

Linda Hamilton
Lepaskan: 2024-11-02 01:07:02
asal
630 orang telah melayarinya

How Do C# and Java Enums Differ?

Memahami Perbezaan antara C# dan Java Enums

Sebagai pendatang baharu kepada C#, menavigasi melalui pangkalan kod yang banyak menggunakan enum boleh menjadi mencabar, terutamanya datang dari latar belakang Java yang kukuh . Artikel ini bertujuan untuk menjelaskan perbezaan antara enum C# dan Java, memperkasakan anda untuk merapatkan jurang dan memanfaatkan potensi penuh penghitungan C#.

Perbezaan Utama

  • Sifat Mudah daripada C# Enums: Tidak seperti Java 1.5 enums, C# enums diakui lebih mudah dalam pelaksanaannya. Ia terutamanya berfungsi sebagai mekanisme untuk mentakrifkan satu set pemalar bernama, tidak mempunyai ciri lanjutan yang terdapat dalam Java.
  • Kaedah Sambungan: Untuk mengimbangi kefungsian terhad, C# memperkenalkan kaedah sambungan, yang membolehkan anda menambah fungsi tersuai pada enum tanpa mengubah takrifan asasnya.

Melaksanakan Contoh Planet Enum Terkenal dalam C

Untuk menggambarkan aplikasi praktikal enum C# dan kaedah sambungan, mari kita menyelidiki contoh enum Planet ikonik yang digunakan dalam dokumentasi Java Sun.

<code class="csharp">using System;

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
}

public static class Planets
{
    public static double GetSurfaceGravity(this Planet p)
    {
        return G * GetMass(p) / (GetRadius(p) * GetRadius(p));
    }

    public static double GetSurfaceWeight(this Planet p, double otherMass)
    {
        return otherMass * p.GetSurfaceGravity();
    }

    public const double G = 6.67300E-11;

    private static double GetMass(Planet p) => GetAttr(p).Mass;

    private static double GetRadius(Planet p) => GetAttr(p).Radius;

    private static PlanetAttr GetAttr(Planet p) =>
        (PlanetAttr)Attribute.GetCustomAttribute(ForValue(p), typeof(PlanetAttr));

    private static MemberInfo ForValue(Planet p) =>
        typeof(Planet).GetField(Enum.GetName(typeof(Planet), p));
}</code>
Salin selepas log masuk

Dalam pelaksanaan C# ini:

  • Atribut tersuai digunakan untuk melampirkan metadata kepada ahli enum dan bukannya menggunakan kelas berasingan seperti dalam contoh Java.
  • Kaedah sambungan GetSurfaceGravity dan GetSurfaceWeight menyediakan fungsi yang sama seperti kaedah Java dengan kemudahan tambahan akses terus daripada Planet enum.
  • Kaedah ForValue mengembalikan medan sepadan dengan nilai enum yang ditentukan, membolehkan pengambilan atribut melalui refleksi.

Dengan menggunakan kaedah sambungan C#, anda boleh melanjutkan fungsi enum untuk menangani kes penggunaan yang sebelum ini dikendalikan oleh pelaksanaan enum Java yang lebih mantap. Ini membolehkan peralihan yang lancar dan pengekodan yang berkesan dalam C#.

Atas ialah kandungan terperinci Bagaimanakah C# dan Java Enums Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan