Rumah > pembangunan bahagian belakang > C++ > Apakah Kovarians, Kontravarian dan Kata Kunci 'masuk'/'keluar' dalam .NET Generics?

Apakah Kovarians, Kontravarian dan Kata Kunci 'masuk'/'keluar' dalam .NET Generics?

Mary-Kate Olsen
Lepaskan: 2025-01-20 17:27:09
asal
497 orang telah melayarinya

What are Covariance, Contravariance, and the

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 sebagai Senarai menggambarkan konsep kontravarians. Menulis kepada jenis yang lebih spesifik (terbitan) bermaksud menggunakan kekangan "dalam" (contravariance) kerana jenis data yang ditulis sepatutnya lebih spesifik.

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>
Salin selepas log masuk

Anggapkan antara muka MyInterface, yang mempunyai kaedah MyFunction(int variable), yang mengembalikan T.

  • Gunakan "keluar" untuk mengubah suai T: interface MyInterface<out T> menunjukkan bahawa T hanya boleh digunakan sebagai jenis pulangan. Menugaskan MyInterface kepada MyInterface adalah sah kerana Derived ialah jenis terbitan daripada Base.
  • Gunakan "dalam" untuk mengubah suai T: interface MyInterface<in T> menunjukkan bahawa T hanya boleh digunakan sebagai parameter kaedah. Menugaskan MyInterface kepada MyInterface adalah tidak sah kerana ia melanggar peraturan kontravarian.

Ringkasan

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!

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