while循环的条件中能否定义变量

yaotomo 2015-08-09 03:40:34
下面的代码,循环读取一个大文件,其中要得到本次真实读取的字节数length时,还要重新写一遍fs.Read(buffer, 0, buffer.Length)来获取。但是写成while (int length = fs.Read(buffer, 0, buffer.Length) > 0)又报错,请问有什么好的解决方案吗?


using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024];
while (fs.Read(buffer, 0, buffer.Length) > 0)
{
int length = fs.Read(buffer, 0, buffer.Length);
string s = Encoding.Default.GetString(buffer,0, length);
Console.Write(s);
}
}
...全文
1659 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
改完BUG就下班 2018-10-02
  • 打赏
  • 举报
回复
我觉得5楼的方法可以,凡是需要在while后面的逻辑判断语句内定义的变量都可以先while(true)之后再在后面的语句主体内定义,后面需要判断写个if语句就行了!
cat_kat 2017-09-19
  • 打赏
  • 举报
回复
写个静态方法呗然后while里调一下
_lee_chong 2015-08-10
  • 打赏
  • 举报
回复
不能在while循环定义,语法规定了的
  • 打赏
  • 举报
回复
while (true)
                {
                    int length = fs.Read(buffer, 0, buffer.Length);
if(length==0){break;}
                    string s = Encoding.Default.GetString(buffer,0, length);
                    Console.Write(s);
                }
ajianchina 2015-08-09
  • 打赏
  • 举报
回复
清爽了

using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
	byte[] buffer = new byte[1024];
	int length = 0;
	do
	{
		length = fs.Read(buffer, 0, buffer.Length);
		if (length > 0) Console.Write(Encoding.Default.GetString(buffer,0, length));
	}
	while(length > 0);
}
yaotomo 2015-08-09
  • 打赏
  • 举报
回复
1#的朋友方法可行,但是2#直接在条件中定义好像不行 while条件中不可以定义一个作用域就是这个while循环的变量吗? 只能在外面定义好,在while条件中赋值?
xuzuning 2015-08-09
  • 打赏
  • 举报
回复
while ((int length = fs.Read(buffer, 0, buffer.Length)) > 0)
全栈极简 2015-08-09
  • 打赏
  • 举报
回复
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
            {
                byte[] buffer = new byte[1024];
                int length = 0;
                while ((length = fs.Read(buffer, 0, buffer.Length)) > 0)
                {
                    string s = Encoding.Default.GetString(buffer, 0, length);
                    Console.Write(s);
                }
            }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧