Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Penutupan C# Mengakses Pembolehubah daripada Kaedah Induknya?

Bagaimanakah Penutupan C# Mengakses Pembolehubah daripada Kaedah Induknya?

DDD
DDDasal
2025-01-08 08:16:41787semak imbas

How Do C# Closures Access Variables from Their Parent Methods?

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!

Kenyataan:
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