Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat Senarai Jenis Generik Terbuka (Kelas) dalam C#?
Cara membuat senarai jenis generik terbuka (Kelas
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
<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
Kaedah alternatif
Jika anda perlu mengekalkan koleksi yang mengandungi objek daripada jenis yang berbeza, anda boleh mempertimbangkan alternatif berikut:
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!