这背后的原因是什么?
我将假设您的意思是“为什么
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循环视为在每次迭代中声明一个新的只读变量(其值取自迭代器)非常有意义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)