Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kovarian Generik dan Kontravarian C# 4.0 Meningkatkan Fleksibiliti Tugasan Jenis?

Bagaimanakah Kovarian Generik dan Kontravarian C# 4.0 Meningkatkan Fleksibiliti Tugasan Jenis?

Patricia Arquette
Lepaskan: 2025-01-25 00:22:13
asal
793 orang telah melayarinya

How Does C# 4.0's Generic Covariance and Contravariance Enhance Type Assignment Flexibility?

c# 4.0 Kerjasama genetik dan penyongsang

C# 4.0 memperkenalkan sokongan untuk kolaborasi genetik dan penyongsang, yang menjadikan silsilah jenis generik lebih fleksibel. Dalam versi awal C#, cuba

untuk menetapkan

ke List<string> akan menyebabkan ralat pengkompil, walaupun List<object> dapat menampung sebarang objek yang boleh ditukar kepada rentetan. List<string>

Untuk menyelesaikan masalah ini, C# 4.0 membolehkan jenis varian output (seperti

) untuk menyelaras, dan jenis varian input (seperti IEnumerable<T>) terbalik. Action<T>

kerjasama

Penyelarasan membolehkan satu jenis digunakan sebagai alternatif kepada jenis lain dalam struktur hierarki warisan. Sebagai contoh,

boleh diberikan kepada

, kerana rentetan adalah objek. Ini kerana List<string> diisytiharkan , menunjukkan bahawa ia hanya boleh mengeluarkan nilai jenis T. Oleh itu, selagi hanya digunakan untuk nilai bacaan, ia adalah selamat untuk menggunakannya sebagai List<object>. IEnumerable<T> IEnumerable<out T> terbalik List<string> List<object>

Disposter membolehkan satu jenis digunakan sebagai alternatif kepada jenis lain dalam struktur hierarki warisan. Sebagai contoh,

boleh diberikan kepada , kerana objek boleh menerima rentetan sebagai parameter. Ini kerana diisytiharkan , menunjukkan bahawa ia hanya boleh menerima nilai jenis T. Oleh itu, selagi hanya digunakan untuk menghantar nilai, selamat menggunakannya sebagai

.

Action<object> Melaksanakan butiran Action<string> Action<T> Action<in T> Dalam C# 4.0, varians dicapai menggunakan sokongan kolaboratif dan songsang CLR. Ini menjadikan C# 4.0 menyokong varians tanpa menjejaskan jenis keselamatan. Action<object> Action<string> Apabila pengisytiharan jenis generik adalah ubah bentuk output atau ubah bentuk input, pengkompil menghasilkan kod IL tambahan untuk memeriksa varians parameter jenis semasa runtime. Ini memastikan bahawa koordinasi dan pembalik digunakan dengan cara yang selamat.

Atas ialah kandungan terperinci Bagaimanakah Kovarian Generik dan Kontravarian C# 4.0 Meningkatkan Fleksibiliti Tugasan Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan