实际上问题应该是为什么Console.WriteLine
只是作为Console.Out.WriteLine
我发现这个小方法使用intellisense,然后打开.NET reflector并'反编译'Console.WriteLine
方法的代码,发现了这个:
public static void WriteLine(string value)
{
Out.WriteLine(value);
}
那么为什么WriteLine
以这种方式实现呢?它完全只是一条捷径还是有另一个原因?
答案 0 :(得分:50)
Console.WriteLine
是一种静态方法。 Console.Out
是一个静态对象,可以作为参数传递给任何采用TextWriter
的方法,该方法可以调用非静态成员方法WriteLine
。
一个有用的示例是某种可自定义的日志记录例程,您可能希望将输出发送到stdout
(Console.Out
),stderr
({{1} })或无处(Console.Error
),或基于某些运行时条件的任何其他内容。
答案 1 :(得分:9)
Brad Abrams (微软CLR和.NET框架的创始成员)说如下。
Console.WriteLine()只是Console.Out.WriteLine 的快捷方式。 控制台被WriteLine重载,以便更容易编写。
来源:Book" Anders Hejlsberg撰写的C#编程语言"。