C# VS Java Enums: Panduan untuk Java Transitioners
Apabila beralih dari Java ke C#, salah satu perbezaan yang ketara ialah layanan terhadap enums. Dalam artikel ini, kita akan menyelidiki perbezaan utama antara C# dan Java enum, menyediakan panduan praktikal untuk mengendalikan perbezaan ini dengan berkesan.
Tidak seperti Java enum, yang merupakan entiti berkuasa yang memiliki kaedah dan pembolehubah contoh, C# enum adalah sememangnya lebih mudah. Walau bagaimanapun, untuk merapatkan jurang fungsi ini, C# memperkenalkan ciri penting: kaedah sambungan pada enum.
Mencipta Setara C# bagi Enum Planet Matahari
Untuk menggambarkan keupayaan kaedah sambungan, mari buat versi C# enum Planet yang terkenal di Matahari.
<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, } public static class Planets { public static double GetSurfaceGravity(this Planet p) { var attr = GetAttr(p); return G * attr.Mass / (attr.Radius * attr.Radius); } private static PlanetAttr GetAttr(Planet p) { var field = typeof(Planet).GetField(Enum.GetName(typeof(Planet), p)); return Attribute.GetCustomAttribute(field, typeof(PlanetAttr)) as PlanetAttr; } private const double G = 6.67300E-11; }</code>
Dalam contoh ini, kami memperkenalkan atribut tersuai PlanetAttr untuk memegang nilai jisim dan jejari. Kaedah sambungan GetSurfaceGravity dan GetSurfaceWeight kemudiannya ditambah untuk menyediakan kefungsian yang setara dengan kaedah enum Java.
Kaedah Sambungan: Merapatkan Jurang Fungsi
Kaedah sambungan membolehkan penambahan baharu kefungsian kepada jenis sedia ada tanpa mengubah suai kod sumber. Pendekatan ini membolehkan kami memanjangkan enum dengan keupayaan yang lebih kaya, meniru enum Java yang penuh ciri.
Atribut Tersuai: Menangkap Sifat Tambahan
Atribut tersuai berfungsi sebagai mekanisme serba boleh untuk melampirkan maklumat sewenang-wenangnya kepada jenis dan ahli. Dalam contoh enum Planet kami, kami menggunakan atribut tersuai untuk menyimpan nilai jisim dan jejari, memudahkan pengiraan graviti permukaan dan berat.
Kesimpulan
Sementara C# enums mungkin kelihatan lebih mudah daripada rakan Java mereka, keupayaan untuk menentukan kaedah sambungan pada enum dan memanfaatkan atribut tersuai mengimbangi kekurangan fungsi yang dirasakan. Dengan menggunakan teknik ini, pembangun yang beralih daripada Java ke C# boleh meniru fungsi biasa yang mereka sandarkan dalam Java dengan berkesan, memastikan peralihan yang lancar dan produktif.
Atas ialah kandungan terperinci Bagaimanakah C# enum dibandingkan dengan Java enum, dan bagaimanakah pembangun Java boleh memanfaatkan kaedah sambungan dan atribut tersuai untuk merapatkan jurang fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!