Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Penutupan C# Membolehkan Akses kepada Pembolehubah daripada Melampirkan Skop?

Bagaimanakah Penutupan C# Membolehkan Akses kepada Pembolehubah daripada Melampirkan Skop?

Barbara Streisand
Barbara Streisandasal
2025-01-08 08:11:42730semak imbas

How Do C# Closures Enable Access to Variables from Enclosing Scopes?

Pemahaman mendalam tentang penutupan C#

Penutupan dalam C# ialah ciri berkuasa yang membolehkan fungsi bersarang mengakses pembolehubah dalam skop lampirannya. Penutupan ialah asas perwakilan sebaris .NET dan kaedah tanpa nama, membenarkan fungsi tanpa nama mengekalkan pembolehubah daripada kaedah induk.

Penutupan C# biasanya muncul dalam bentuk perwakilan sebaris atau kaedah tanpa nama. Apabila ditakrifkan dalam kaedah induk, fungsi tanpa nama ini boleh mengakses pembolehubah yang diisytiharkan dalam badan kaedah induknya.

Permohonan penutupan

Contoh berikut menunjukkan cara kaedah FindById menggunakan penutupan untuk mencari Person objek berdasarkan ID mereka:

<code class="language-csharp">public Person FindById(int id)
{
    return this.Find(delegate(Person p)
    {
        return (p.Id == id);
    });
}</code>

Fungsi tanpa nama di sini bertindak sebagai predikat, yang menilai objek Person untuk menentukan sama ada IDnya sepadan dengan parameter id yang disediakan.

Ekspresi Lambda

Dalam C# 6 dan ke atas, ungkapan Lambda menyediakan sintaks yang lebih ringkas untuk mentakrifkan penutupan:

<code class="language-csharp">public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}</code>

Ungkapan Lambda ini bersamaan dengan perwakilan tanpa nama di atas dan juga merupakan penutup.

Ringkasan

Penutupan dalam C# ialah mekanisme berkuasa yang membenarkan fungsi bersarang untuk mengakses pembolehubah dalam skop yang disertakan. Dengan memanfaatkan korelasi ini antara fungsi ibu bapa dan anak, penutupan membolehkan kami mencipta aplikasi yang lebih fleksibel dan lebih mudah diselenggara. Sama ada anda memilih kaedah tanpa nama tradisional atau ungkapan lambda moden, penutupan boleh meningkatkan kemahiran pengaturcaraan C# anda.

Atas ialah kandungan terperinci Bagaimanakah Penutupan C# Membolehkan Akses kepada Pembolehubah daripada Melampirkan Skop?. 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