Meneroka Penutupan C#: Mengakses Pembolehubah daripada Kaedah Melampirkan
Dalam pengaturcaraan, "penutupan" merujuk kepada fungsi yang mengekalkan akses kepada pembolehubah daripada skop sekelilingnya, walaupun selepas fungsi sekeliling selesai dilaksanakan. Dalam C#, ini sering dilaksanakan menggunakan kaedah tanpa nama atau ungkapan lambda. Ciri utama ialah keupayaan penutupan untuk "mengingat" pembolehubah daripada kaedah induknya.
Contoh C# Ilustrasi:
Pertimbangkan coretan kod ini:
<code class="language-csharp">public Person FindById(int id) { return this.Find(delegate(Person p) { return (p.Id == id); }); }</code>
Di sini, perwakilan tanpa nama dalam FindById
mengakses pembolehubah id
yang diisytiharkan dalam kaedah FindById
. Ini menunjukkan keupayaan penutupan untuk menangkap dan mengekalkan akses kepada pembolehubah daripada skop yang disertakan.
Pembelajaran Lanjutan:
Untuk mengetahui penutupan yang lebih mendalam, rujuk sumber seperti tulisan Martin Fowler dan Jon Skeet mengenai subjek tersebut. Mereka menawarkan penjelasan dan contoh terperinci.
Memanfaatkan Sintaks C# 6:
C# 6 memperkenalkan sintaks yang lebih ringkas untuk penutupan menggunakan ungkapan lambda:
<code class="language-csharp">public Person FindById(int id) { return this.Find(p => p.Id == id); }</code>
Ungkapan lambda ini mencapai kefungsian yang sama seperti perwakilan tanpa nama dalam contoh sebelumnya, tetapi dengan kebolehbacaan yang dipertingkatkan.
Sintaks Ringkas Setara:
Contoh di atas boleh dipermudahkan lagi menggunakan ungkapan anak panah:
<code class="language-csharp">public Person FindById(int id) => this.Find(p => p.Id == id);</code>
Ini menunjukkan cara yang lebih padat untuk menentukan penutupan dalam C#.
Atas ialah kandungan terperinci Bagaimanakah Penutupan C# Mengakses Pembolehubah daripada Kaedah Induknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!