Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat Senarai Jenis Generik Terbuka (Kelas) dalam C#?

Bagaimana untuk Membuat Senarai Jenis Generik Terbuka (Kelas) dalam C#?

Susan Sarandon
Susan Sarandonasal
2025-01-11 08:30:10251semak imbas

How to Create a List of Open Generic Types (Class) in C#?

Cara membuat senarai jenis generik terbuka (Kelas) dalam C#

Dalam pengaturcaraan, anda mungkin menghadapi senario di mana anda perlu memproses berbilang jenis data dalam koleksi. Dalam kes ini, generik boleh menyediakan penyelesaian yang fleksibel. Walau bagaimanapun, menggunakan jenis generik terbuka, seperti Senarai, kadangkala mengakibatkan ralat pengkompil.

Andaikan anda mempunyai Data kelas yang mewakili jenis data yang berbeza, seperti StringData dan DecimalData. Untuk mengekalkan senarai jenis data yang berbeza ini, anda boleh cuba menggunakan Senarai seperti ini:

<code class="language-c#">List<Data> dataCollection = new List<Data>();</code>

Walau bagaimanapun, kod ini tidak akan disusun kerana pengkompil akan mengadu bahawa "Data" jenis generik memerlukan parameter jenis. Ini kerana, untuk jenis generik terbuka, pengkompil tidak boleh membuat kesimpulan parameter jenis semasa membina senarai.

Memahami jenis generik terbuka dan tertutup

Untuk menyelesaikan masalah ini, adalah penting untuk memahami perbezaan antara jenis generik terbuka dan tertutup. Dalam kes List, ia mewakili jenis generik terbuka, yang bermaksud bahawa parameter jenis T kekal tidak ditentukan. Sebaliknya, jenis generik tertutup menentukan parameter jenis, seperti List> atau List>.

Buat senarai jenis generik tertutup

Untuk membuat senarai jenis generik tertutup, anda perlu menentukan parameter jenis semasa membina senarai. Contohnya:

<code class="language-c#">List<Data<string>> stringDataCollection = new List<Data<string>>();
List<Data<decimal>> decimalDataCollection = new List<Data<decimal>>();</code>

Senarai ini kini boleh menerima contoh StringData dan DecimalData masing-masing.

Batasan Polimorfisme Jenis Generik Terbuka

Malangnya, dalam C#, tiada mekanisme langsung untuk mencapai polimorfisme sebenar jenis generik terbuka. Ini bermakna anda tidak boleh membuat senarai seperti Senarai> dan menyimpan jenis lampiran yang berbeza di dalamnya, seperti Data dan Data. Ini adalah had dalam reka bentuk generik C#.

Kaedah alternatif

Jika anda perlu mengekalkan koleksi yang mengandungi objek daripada jenis yang berbeza, anda boleh mempertimbangkan alternatif berikut:

  • Gunakan antara muka bukan generik atau kelas abstrak untuk menentukan tingkah laku awam dan menghantar objek kepada jenis yang sesuai apabila diperlukan.
  • Gunakan pengaturcaraan dinamik untuk meningkatkan fleksibiliti, tetapi dengan mengorbankan keselamatan jenis.
  • Gunakan perpustakaan pihak ketiga yang mungkin menyediakan fungsi generik yang lebih maju.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Senarai Jenis Generik Terbuka (Kelas) dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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