c# dan kovarians jenis kembali: Memahami batasan dan penyelesaian
Pengaturcaraan berorientasikan objek sering menggunakan kovarians jenis pulangan, di mana kelas yang diperolehi dapat mengatasi kaedah kelas asas, mengembalikan jenis yang lebih spesifik. Walau bagaimanapun, C# terutamanya tidak mempunyai ciri ini.
kenapa c# tidak menyokong kovarians jenis pulangan
Batasan ini berpunca dari runtime bahasa biasa (CLR). Seni bina CLR tidak semestinya menyokong kovarians jenis pulangan, menghalang pengkompil C# daripada menghasilkan urutan panggilan kaedah maya yang tepat dalam senario kovarian.
penyelesaian yang berkesan
Walaupun kovarians jenis pulangan langsung tidak tersedia, beberapa strategi secara berkesan meniru fungsinya:
Menggunakan kaedah penolong yang dilindungi: Buat kaedah penolong yang dilindungi dalam kelas asas yang mengembalikan jenis yang kurang khusus. Kelas yang diperolehi kemudian dapat mengatasi kaedah ini, mengembalikan jenis yang lebih spesifik.
memanfaatkan kata kunci : new
Gunakan kata kunci dalam kelas yang diperolehi untuk menentukan kaedah yang mengatasi kaedah kelas asas tetapi dengan jenis pulangan yang berbeza. Ini membolehkan jenis pulangan yang lebih spesifik semasa mengekalkan nama kaedah asal. new
Secara ringkas
Walaupun C# tidak langsung menyokong kovarians jenis pulangan, penyelesaian yang disebutkan di atas menawarkan penyelesaian praktikal. Menggunakan kaedah penolong yang dilindungi atau kata kunci memberikan manfaat spesifik jenis pulangan tanpa mengorbankan keselamatan dan kebolehpercayaan aplikasi. new
Atas ialah kandungan terperinci Kenapa tidak C# menyokong kovarians jenis pulangan, dan bagaimana saya boleh mengerjakannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!