您需要做的就是Write(char)
在派生类上实现。TextWriter
如果有人调用WriteLine
您的新类,WriteLine
则会调用基类方法。Write
它会做正确的事:用个人\r
和\n
角色调用你的方法。
实际上,WriteLine(string)
看起来像这样:
void WriteLine(string s)
{
Write(s);
Write("\r\n");
}
并且Write(string)
实际上是:
foreach (char c in s)
{
Write(c);
}
解析为循环调用的所有Write
方法。TextWriter
Write(char)
你真的不需要实现任何其他东西。只需覆盖Write(char)
并插入它。它会工作。
您可以覆盖那些其他方法。这样做会让你的课堂更有效率(更快)。但这不是必需的。我说做你能做的最简单的事情。然后,如果您在分析后确定您的自定义编写器太慢,请根据需要覆盖其他方法。
这是一个最小的TextWriter
后代:
public class ConsoleTextWriter: TextWriter
{
public override void Write(char value)
{
Console.Write(value);
}
public override Encoding Encoding
{
get { return Encoding.Default; }
}
}
如果我再写:
using (var myWriter = new ConsoleTextWriter())
{
myWriter.Write("hello, world");
myWriter.WriteLine();
myWriter.WriteLine();
myWriter.WriteLine("Goodbye cruel world.");
myWriter.Write("Fee fie foe foo!");
}
输出是:
hello, world
Goodbye cruel world.
Fee fie foe foo!