首页 > 后端开发 > C++ > 为什么 C# 5.0 的捕获闭包修复不适用于 For 循环?

为什么 C# 5.0 的捕获闭包修复不适用于 For 循环?

Patricia Arquette
发布: 2025-01-07 19:16:43
原创
366 人浏览过

Why Doesn't C# 5.0's Captured Closure Fix Apply to For Loops?

C# 5.0 中的闭包捕获(循环变量)

问题:

在 C# 5.0 中,foreach 循环中捕获闭包的问题已得到解决,确保捕获循环变量的正确值。但是,for 循环中仍然存在相同的问题。为什么这个问题没有同时针对这两种类型的循环进行解决?

解答:

for 循环中现有的行为在逻辑上是合理的。虽然 foreach 循环类似于为每次迭代声明一个新变量,但 for 循环具有独特的结构,包括初始化器、条件、迭代器和主体。

for 循环中的初始化器只执行一次,因此只进行一次“变量实例化”是合乎逻辑的。此外,对于每次循环迭代,并没有关于变量“初始”值的固有假设。

考虑以下示例:

<code class="language-C#">for (int i = 0, j = 10; i < 5; i++, j--) {
    Action action = () => Console.WriteLine(i, j);
    action();
}</code>
登录后复制

在这种情况下,如果针对 for 循环解决这个问题,将很难确定其行为。

以上是为什么 C# 5.0 的捕获闭包修复不适用于 For 循环?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板