#region demo_13
public delegate TResult Func<TResult>();
static void demo_13()
{
Console.WriteLine("demo_12 :");
foreach (string line in ReadLine("text.txt"))
{
Console.WriteLine(line);
}
}
static IEnumerable<string> ReadLine(string filename)
{
return ReadLine(filename, Encoding.UTF8);
}
static IEnumerable<string> ReadLine(string filename, Encoding encoding)
{
return ReadLine(delegate { return new StreamReader(filename, encoding); });
}
static IEnumerable<string> ReadLine(Func<TextReader> provider)
{
using (TextReader reader = provider())
{
string line;
while((line=reader.ReadLine())!=null)
{
yield return line;
}
}
}
#endregion
来自:深入理解C#第2版