实际上问题应该是为什么Console.WriteLine
存在只是为了包装Console.Out.WriteLine
我发现了这个使用智能感知的小方法,然后打开.NET 反射器并“反编译”了该Console.WriteLine
方法的代码,然后发现:
public static void WriteLine(string value)
{
Out.WriteLine(value);
}
那么为什么要这样WriteLine
实现呢?它完全只是一个捷径还是有其他原因?
Console.WriteLine
是一种静态方法。Console.Out
是一个静态对象,可以作为参数传递给任何采用 a 的方法TextWriter
,并且该方法可以调用非静态成员方法WriteLine
。
这很有用的一个示例是某种可自定义的日志记录例程,您可能希望将输出发送到stdout
( Console.Out
)、stderr
( Console.Error
) 或无处 ( System.IO.TextWriter.Null
) 或基于某些运行时条件的任何其他内容。
Brad Abrams(微软 CLR 和 .NET 框架的创始成员)说如下。
Console.WriteLine() 只是 Console.Out.WriteLine 的快捷方式。 控制台由 WriteLine 属性重载,以使其更容易编写。
资料来源:书籍“Anders Hejlsberg 的 C# 编程语言”。