栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

这背后的原因是什么?

我将假设您的意思是“为什么

for
循环也没有更改?”

答案是对于

for
循环,现有行为是完全合理的。如果您将
for
循环分成:

  • 初始化器
  • 健康)状况
  • 迭代器
  • 身体

…然后循环大致如下:

{    initializer;    while (condition)    {        body;        iterator;    }}

(当然,

iterator
也要在
continue;
语句的末尾执行。)

初始化部分在 逻辑上 仅发生一次,因此完全逻辑上只有一个“变量实例化”。此外,在循环的每次迭代中都没有自然的变量“初始”值-不用说

for
循环
必须具有 在初始化器中声明变量,在条件中进行测试并在迭代器中对其进行修改的形式。您希望像这样的循环做什么:

for (int i = 0, j = 10; i < j; i++){    if (someCondition)    {        j++;    }    actions.Add(() => Console.WriteLine(i, j));}

与此相比,有

foreach
其循环 看起来 像你宣布每次迭代一个独立的变量。哎呀,变量是只读的,这使它 更像
是一个在两次迭代之间变化的变量。将
foreach
循环视为在每次迭代中声明一个新的只读变量(其值取自迭代器)非常有意义。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号