实际上,问题应该是,为什么Console.WriteLine仅仅是作为Console.Out.WriteLine的包装器而存在
我使用智能感知找到了这个小方法,然后打开.NET reflector并‘反编译’了Console.WriteLine方法的代码,发现了这个:
public static void WriteLine(string value)
{
Out.WriteLine(value);
}那么为什么WriteLine是以这种方式实现的呢?这完全是一条捷径,还是另有原因?
发布于 2009-07-19 02:57:36
Console.WriteLine是一种静态方法。Console.Out是一个静态对象,它可以作为参数传递给任何接受TextWriter的方法,并且该方法可以调用非静态成员方法WriteLine。
这将非常有用的一个示例是某种可定制的日志记录例程,在这些例程中,您可能希望将输出发送到stdout (Console.Out)、stderr (Console.Error)或nowhere (System.IO.TextWriter.Null),或者基于某个运行时条件的任何其他内容。
发布于 2016-11-23 01:43:02
Brad Abrams (微软CLR和.NET框架的创始成员)如下所述。
Console.WriteLine()只是Console.Out.WriteLine的快捷方式。控制台被WriteLine属性重载,以使其更易于编写。
来源: Anders Hejlsberg的"The C# Programming Language“一书。
https://stackoverflow.com/questions/1149131
复制相似问题