一个c#while循环问题

前提条件:sr是一个StreamReader具体代码:while((string s = sr.ReadLine())!=null){//things to do}这一段会报错,如果把s放在循环外部声明并赋值,那么就不会报错,请问下这是怎么回事呢?还有,这样的话在for循环里面有可以定义变量,感觉有点矛盾啊!

原则上是可以的,而且这种写法也很常见,没有看到具体的语境我也不好下判断。但他与for中的变量完全是不一样的!for循环中的变量声明在了第一节,也就是第一个分号前,不管for执行了多少次,那个只会执行一次,不会执行多次的。而while只是相同于执行了for循环的中间条件部分而已,在条件部分是每次都要执行的!

例如for(int i = 0;i<10;i++)代码中,int i=0只仅仅被执行了一次,而后两个才会多次执行,所以这时的定义与while中的不一样,而while中相当于只执行了i<10这一句而已。

但我肯定的是你的那个写法也是正确的,可能是语境哪里个地方出错了。以前这种写法多了去了!但现在你不妨这样写:

while(!sr.EndOfStream)
{
string s = sr.readline();
//something to do;
}
这种与你的写法效率上来说是等同的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-28
在while里面定义变量表示每次循环都定义一个新变量,只是名字相同而已,每次都是新对象。而for循环的for(int i=0;...)这里的int i=0只是初始化,只一次。之所for循环这样演进是为了保证代码完整性,因为以前要把int i=0放在外面,甚至不再for循环之前,中间有可能被改变。
第2个回答  2012-04-28
while(sr.ReadLine()!=null)
{

}
第3个回答  2012-05-11
可能是你在while之外声明sr吧,while循环他只是局部变量循环了。
第4个回答  2012-04-28
while里面不允许定义变量,这么多年写下来,至于为啥不清楚,反正知道不可以。你这个问题应该到msdn上问问。
第5个回答  2012-05-02
while循环跟的条件是返回一个布尔值的判断句

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网