36

实际上问题应该是为什么Console.WriteLine存在只是为了包装Console.Out.WriteLine

我发现了这个使用智能感知的小方法,然后打开.NET 反射器并“反编译”了该Console.WriteLine方法的代码,然后发现:

public static void WriteLine(string value)
{
    Out.WriteLine(value);
}

那么为什么要这样WriteLine实现呢?它完全只是一个捷径还是有其他原因?

4

2 回答 2

62

Console.WriteLine是一种静态方法。Console.Out是一个静态对象,可以作为参数传递给任何采用 a 的方法TextWriter,并且该方法可以调用非静态成员方法WriteLine

这很有用的一个示例是某种可自定义的日志记录例程,您可能希望将输出发送到stdout( Console.Out)、stderr( Console.Error) 或无处 ( System.IO.TextWriter.Null) 或基于某些运行时条件的任何其他内容。

于 2009-07-19T02:57:36.137 回答
21

Brad Abrams(微软 CLR 和 .NET 框架的创始成员)说如下。

Console.WriteLine() 只是 Console.Out.WriteLine 的快捷方式控制台由 WriteLine 属性重载,以使其更容易编写

资料来源:书籍“Anders Hejlsberg 的 C# 编程语言”。

于 2016-11-22T17:43:01.977 回答