Penjelasan terperinci tentang kovarians, kontravarians dan "masuk/keluar" dalam generik .NET
Kovarian dan kontravarian memainkan peranan penting dalam reka bentuk antara muka dan perwakilan generik .NET. Mereka menentukan cara untuk menggantikan jenis generik dengan selamat dalam senario yang berbeza.
Kovarian dan kontravarian
Kovarian membenarkan jenis yang lebih "terbitan" (lebih khusus) digunakan sebagai ganti jenis primitif, dengan syarat jenis primitif hanyalah "nilai pulangan" (cth., sebagai nilai pulangan). Sebaliknya, kontravarian membenarkan jenis yang lebih "asas" (kurang khusus) digunakan sebagai ganti jenis asal, dengan syarat jenis asal hanya digunakan sebagai "input" (contohnya, sebagai parameter kaedah).
“masuk” dan “keluar”
Kata kunci "masuk" dan "keluar" masing-masing ialah singkatan untuk kovarians dan kontravarians. Apabila jenis generik hanya muncul sebagai nilai pulangan, gunakan "keluar"; apabila jenis generik hanya muncul sebagai parameter kaedah, gunakan "masuk".
Penjelasan Hubungan
Contoh dalam artikel tentang ketidakupayaan untuk merawat Senarai
Penjelasan mendalam tentang penggunaan antara muka generik
Untuk pemahaman yang lebih mendalam tentang kovarians dan kontravarians, pertimbangkan dua kaedah generik berikut:
<code>public Base DoSomething(int variable) public Derived DoSomethingElse(int variable)</code>
Anggapkan antara muka MyInterface
interface MyInterface<out T>
menunjukkan bahawa T hanya boleh digunakan sebagai jenis pulangan. Menugaskan MyInterfaceinterface MyInterface<in T>
menunjukkan bahawa T hanya boleh digunakan sebagai parameter kaedah. Menugaskan MyInterfaceRingkasan
Memahami konsep kovarians, kontravarian dan "masuk/keluar" adalah penting untuk menggunakan generik dalam .NET dengan berkesan. Ia membolehkan anda membuat kod selamat jenis dengan memastikan jenis generik diganti dengan betul berdasarkan penggunaannya.
Atas ialah kandungan terperinci Apakah Kovarians, Kontravarian dan Kata Kunci 'masuk'/'keluar' dalam .NET Generics?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!