Demystifying the C# Yield-Return Mechanism: Listing 2.

The FetchNextLine method.

static IEnumerable<string> FetchNextLine(string fileName)
{
  StreamReader sr = new StreamReader(fileName);
  string line = "";
  string[] tokens = null;

  while ((line = sr.ReadLine()) != null)
  {
    if (line.StartsWith("d@") == true)
      yield return line;
    else if (line.StartsWith("a@") == true) {
      string s = line.Replace('a', 'd');
      line = sr.ReadLine(); // advance to next line
      tokens = line.Split('@');
      s += tokens[1];
      yield return s;
    }
  } 
  sr.Close();
}

About the Author

Dr. James McCaffrey works for Microsoft Research in Redmond, Wash. He has worked on several Microsoft products including Azure and Bing. James can be reached at [email protected].

comments powered by Disqus

Featured

Subscribe on YouTube