Rumah >pembangunan bahagian belakang >C++ >Bolehkah enums mewarisi dalam c#?
c# Analisis mekanisme "warisan" yang disenaraikan
warisan adalah asas pengaturcaraan yang berorientasikan objek, yang membolehkan ciri -ciri warisan kelas induk. Jadi, bolehkah konsep yang sama digunakan untuk penghitungan? Artikel ini membincangkan kemungkinan mewujudkan kemudahan peringkat rendah "warisan".
Pertimbangkan kod berikut:
Matlamatnya adalah untuk mencipta penghitungan
<code class="language-csharp">namespace low { public enum base { x, y, z } } namespace mid { public enum consume : low.base { } }</code>di ruang nama , yang menghasilkan
dalam ruang nama. Walau bagaimanapun, kaedah ini tidak boleh dilaksanakan. mid
consume
Sebab mengapa penghitungan tidak dapat mewarisi low
base
semua penghitungan. Spesifikasi CLI untuk pelaksanaan wajib warisan ini, dengan berkesan menjadikan semua penghitungan jenis nilai dan dimeteraikan.
alternatif System.Enum
<code>CLI 规范 8.5.2 节 • 所有枚举都必须派生自 System.Enum • 由于上述原因,所有枚举都是值类型,因此是密封的</code>
pemalar dalam kelas: pemalar yang ditakrifkan dalam kelas boleh diganti. Walau bagaimanapun, dalam senario yang diberikan, ia tidak boleh dilaksanakan kerana ia bergantung kepada perkhidmatan luaran yang bergantung kepada penghitungan.
Kelas pembungkusan:
Penyelesaiannya adalah untuk membuat kelas pembungkusan yang mewakili nilai penghitungan. Kelas -kelas ini akan memberikan abstraksi dan membolehkan akses ke lapisan bawah. Walau bagaimanapun, kaedah ini akan memperkenalkan kerumitan tambahan dan mungkin tidak semudah menggunakan penghitungan.Atas ialah kandungan terperinci Bolehkah enums mewarisi dalam c#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!