【发布时间】:2016-03-21 17:26:34
【问题描述】:
我有这段代码,我想改进它。我想删除 goto
string NameOfFile = tbOpenFile.Text;
FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite);
StreamReader r_Read = new StreamReader(ReadStream);
i = 1;
lb1.Items.Clear();
for (; ; i++)
{
tbOpenFile.Text = r_Read.ReadLine();
lines[i] = tbOpenFile.Text;
lb1.Items.Add(lines[i]);
if (r_Read.EndOfStream.Equals(true))
goto next;
}
next:
{
textBox2.Text = r_Read.EndOfStream.ToString();
ReadStream.Close();
}
我尝试过使用 if 来做这样的事情
string NameOfFile = tbOpenFile.Text;
FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite);
StreamReader r_Read = new StreamReader(ReadStream);
i = 1;
lb1.Items.Clear();
for (; ; i++)
{
tbOpenFile.Text = r_Read.ReadLine();
lines[i] = tbOpenFile.Text;
lb1.Items.Add(lines[i]);
if (r_Read.EndOfStream.Equals(true))
{
textBox2.Text = r_Read.EndOfStream.ToString();
ReadStream.Close();
}
}
并且喜欢这样尝试使用 while
string NameOfFile = tbOpenFile.Text;
FileStream ReadStream = new FileStream(NameOfFile, FileMode.Open, FileAccess.ReadWrite);
StreamReader r_Read = new StreamReader(ReadStream);
i = 1;
lb1.Items.Clear();
while(r_Read.EndOfStream.Equals(true))
{
for (; ; i++)
{
tbOpenFile.Text = r_Read.ReadLine();
lines[i] = tbOpenFile.Text;
lb1.Items.Add(lines[i]);
}
continue;
textBox2.Text = r_Read.EndOfStream.ToString();
ReadStream.Close();
}
但我总是出错
无法访问的代码
【问题讨论】:
-
continue;之后的代码没有执行——那是你无法访问的代码。 -
if (r_Read.EndOfStream.Equals(true)) 中断;
-
Goto 是 非常 不好的做法。我想知道为什么这不是第一条评论。
-
@bytecode77 OP 正试图摆脱
goto。 -
while (!r_Read.EndOfStream) {...}并完全删除for。
标签: c# loops if-statement for-loop while-loop