在
使用c#'s 內部的lambda表達式或匿名方法可以創建“訪問修改後的閉合”錯誤。 編譯器對循環變量的處理是此問題的關鍵因素。
foreach
>可變範圍
的問題
foreach
>與大多數語言不同,C#聲明
循環的身體。這意味著整個循環僅存在一個變量實例。 每次迭代都會更新此單個變量,從而導致封閉中使用時出乎意料的行為。 然後關閉,然後捕獲變量的
。
foreach
循環變量限制
>另一個限制是,
> >為什麼?
>
foreach
初始C#規範對
循環)的決定。 但是,事實證明這是有問題的,與預期行為相矛盾並引起錯誤。 c#5的解決方案
foreach
>識別此設計缺陷,Microsoft在C#5中解決了它。在C#5和以後,現在for
loop變量在
>在中。這樣可以確保閉合捕獲每個循環週期的變量的新實例,從而解決“訪問修改後的封閉”問題,並將C#與常見的編程實踐對齊。
以上是為什麼C#'s' foreach”循環變量可重用導致閉合陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!