StreamReader 的 While 循环不起作用

use*_*486 -8 c# streamreader while-loop

表单在内部停止工作。返回cursor to c=s.Substring...while

StreamReader sr= new StreamReader("Unos.txt");
s = sr.ReadLine();
            c = s.Substring(s.IndexOf(',') + 2, (s.Length - s.IndexOf(',') + 2) - (s.Length - s.IndexOf('-') + 2));
            if ((String.Equals(cbRazred.SelectedItem.ToString(), c.Substring(0, (c.IndexOf('-')))) &&
                String.Equals(cbOdeljenje.SelectedItem.ToString(), odeljenje.ToString()))) lbSpisak.Items.Add(s.Substring(0, s.IndexOf(',')));
            while (s != null)
            {
                s = sr.ReadLine();
                c = s.Substring(s.IndexOf(',') + 2, (s.Length - s.IndexOf(',') + 2) - (s.Length - s.IndexOf('-') + 2));
                if ((String.Equals(cbRazred.SelectedItem.ToString(), c.Substring(0, (c.IndexOf('-')))) &&
                    String.Equals(cbOdeljenje.SelectedItem.ToString(), odeljenje.ToString()))) lbSpisak.Items.Add(s.Substring(0, s.IndexOf(',')));
            }
            sr.Close();
Run Code Online (Sandbox Code Playgroud)

apo*_*ene 5

更好地使用:

while (!sr.EndOfStream)
Run Code Online (Sandbox Code Playgroud)

作为检查您的 while 循环:

using (StreamReader sr = new StreamReader("Unos.txt"))
{
    while (!sr.EndOfStream)
    {
        s = sr.ReadLine();

        // make new checks on s because you're getting substrings and indexes that may not exist
        //e.g
        if (s.Length>=1)...
        //do you logic
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我可以问为什么downvote? (2认同)