首頁 > 後端開發 > C++ > C# 閉包如何允許存取其直接作用域之外的變數?

C# 閉包如何允許存取其直接作用域之外的變數?

Susan Sarandon
發布: 2025-01-08 08:01:41
原創
415 人瀏覽過

How Do C# Closures Enable Access to Variables Outside Their Immediate Scope?

理解 C# 閉包:存取超出直接作用域的變數

C# 閉包,也稱為內嵌委託或匿名方法,是強大的程式設計結構。 它們是巢狀函數,即使在封閉函數完成執行之後,也可以保持對周圍(封閉)函數的變數的存取。

讓我們用一個例子來說明這一點:

public Person FindById(int id)
{
    return this.Find(delegate(Person p)
    {
        return (p.Id == id);
    });
}
登入後複製

匿名方法(delegate)充當閉包。 至關重要的是,它從 id 函數存取 FindById 參數,即使它是稍後在 FindById 函數範圍之外執行的。

C# 6 引入了 lambda 表達式,提供了更簡潔的方式來實現相同的結果:

public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}
登入後複製

lambda 表達式 (p => p.Id == id) 優雅地封裝了閉包的行為。

總之,C# 中的閉包提供了一種建立巢狀函數的機制,該函數保留對其父函數上下文的存取權。這使得程式碼更加簡潔、可重複使用和封裝,從而簡化了複雜的邏輯。

以上是C# 閉包如何允許存取其直接作用域之外的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板