在`while`循环中,为什么我不能在`for`循环中声明变量?
可能重复:
为什么我们不能在while循环中定义变量?
我想简化以下代码:
string line; while ((line = sr.ReadLine()) != null)
成:
while ((string line = sr.ReadLine()) != null)
但失败了。
但是,我们肯定可以这样做:
for (int i=0, int n=50;i<n;i++)
你仍然可以for
:
for (string line; (line = sr.ReadLine()) != null; ) ...
由于while
循环采用一个条件,因此每次循环运行时都会声明一个新的line
实例,因为每次循环都会计算条件。
它在for
循环中工作,因为初始化程序(三个以分号分隔的表达式中的第一个)在开始时只运行一次; 条件是第二个表达式。 尝试在for
循环的条件表达式中声明变量时会遇到同样的问题。
我相信原因是你会多次声明变量(循环的每次传递)。
在这里问到并回答得更详细: 同样的问题
在for循环中:
for(<>,<>,<>)
第一个表达式只被评估一次。
在一个while循环中:
while(<>)
每次运行时都会计算表达式。
多次重新定义相同的变量是没有意义的。
- 带有List 的SerializationBinder
- MsiExec进度捕获
- 从VS2010调试在远程IIS服务器上运行的ASP.NET应用程序
- entity framework实体不在DataSpace.OSpace(_workspace.GetItemCollection(DataSpace.OSpace))中,而是在DataSpace.CSpace中
- 通用.Net制作人/消费者
- LINQ to XML:什么是上下移动节点的最有效方法
- c#.net更改标签文本
- 页面生命周期 – 使用FindControl引用在页面加载期间以编程方式创建的控件
- C#System.Windows.Automation获取元素文本