Почему Console.Out.WriteLine существует? - PullRequest
25 голосов
/ 19 июля 2009

На самом деле вопрос должен заключаться в том, почему Console.WriteLine существует только для того, чтобы быть оберткой для Console.Out.WriteLine

Я нашел этот маленький метод с использованием intellisense, затем открыл .NET рефлектор и «декомпилировал» код для метода Console.WriteLine и нашел это:

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

Так почему WriteLine реализован таким образом? Это просто ярлык или есть другая причина?

Ответы [ 2 ]

50 голосов
/ 19 июля 2009

Console.WriteLine - статический метод. Console.Out - это статический объект, который может передаваться в качестве параметра любому методу, который принимает TextWriter, и этот метод может вызывать нестатический метод-член WriteLine.

Примером, где это было бы полезно, является какая-то настраиваемая подпрограмма ведения журнала, где вы можете отправить вывод в stdout (Console.Out), stderr (Console.Error) или в никуда (System.IO.TextWriter.Null ) или что-либо еще, основанное на каком-то условии во время выполнения.

9 голосов
/ 22 ноября 2016

Брэд Абрамс (член-основатель среды CLR и .NET в Microsoft) говорит следующее.

Console.WriteLine () - это просто ярлык для Console.Out.WriteLine . Консоль была перегружена собственностью WriteLine, чтобы сделать ее намного проще для написания .

Источник: книга "Язык программирования C # Андерса Хейлсберга".

...