Saya telah melakukan pengembangan .NET untuk waktu yang lama, dan baru-baru ini mengulas buku "C# Advanced Programming". Saya menemukan bahwa banyak masalah yang pernah saya pahami tetapi tidak mengerti sebenarnya dapat dipelajari dan dipahami secara perlahan.
Jadi, saya berencana untuk mulai menulis posting blog tentang "Seri Pemrograman Lanjutan C#". Ini akan mengacu pada konsep buku "C# Advanced Programming", dan juga akan merujuk pada posting blog para ahli lain, saya harap Anda mengerti. Jika ada yang salah, tolong perbaiki.
(Juga: Posting blog ini tidak akan menjelaskan dasar-dasar definisi dan tata bahasa.) )
Mari kita bicara tentang commissioning.
Delegate banyak digunakan di .NET. Ekspresi Lambda, acara, metode anonimitas, dll. akan terlibat (nantikan posting blog berikutnya).
Jadi apa itu amanah?
Dalam istilah awam, delegasi tidak berbeda dengan menentukan metode kecuali bahwa mereka harus menentukan kata kunci delegasi dan tidak memiliki entitas metode. Anda dapat menganggapnya sebagai placeholder, misalnya, ketika Anda menulis kode tanpa mengetahui apa yang akan Anda tangani. Anda hanya perlu mengetahui apa jenis parameter dan jenis output yang akan Anda perkenalkan dan mendefinisikannya. Ini adalah metode yang disampaikan dalam buku bahwa tanda tangan harus memiliki arti yang sama.
Mari kita definisikan delegasi dasar:
Hasil eksekusi:
Apakah Anda melihat tempat praktis di atas untuk dipercayakan? YaituDelegasi dapat menjalankan metode apa pun dengan jenis parameter penyerapan dan jenis pengembalian yang sama, atau bahkan antrean metode dengan tanda tangan yang sama.
Jadi apakah tanda tangan metode kita (yaitu parameter impor dan output) benar-benar harus persis sama dengan delegasi? Jawaban: Tidak, kita tidak dapat mengabaikan kovarians dan variasi terbalik. Mari kita perkenalkan secara singkat pengetahuan tentang kovarian dan inverter.
"Kovarians" berarti dapat menggunakan jenis yang lebih diturunkan daripada tipe turunan yang ditentukan semula. "Inverter" mengacu pada kemampuan untuk menggunakan tipe dengan tingkat derivasi yang lebih kecil. Kemudian, komisi kami juga tunduk pada kovarians dan terbalik.
Ini berarti bahwa jika delegasi ditentukan, tidak hanya metode tanda tangan yang sama persis dapat menetapkan nilai ke variabel delegasi.
Jika tabel parameter metode cocok dengan deklarasi delegasi, tetapi mengembalikan kelas turunan (deklarasi delegasi mengembalikan jenisnya), maka metode tersebut juga dapat ditetapkan ke variabel delegasi ini.
Jika jenis metode yang dikembalikan cocok dengan deklarasi delegasi, tetapi argumennya adalah kelas leluhur dari jenis parameter deklarasi delegasi, maka metode tersebut juga dapat ditetapkan ke variabel delegasi.
Jika parameter dan jenis pengembalian metode cocok dengan asumsi dalam dua baris di atas, maka metode tersebut juga dapat ditetapkan ke variabel delegasi.
Berikut ini adalah contoh sederhana dari kovarian vs. inverter:
Kovarians:
Inverter:
|