36

実際、問題は、なぜConsole.WriteLineラッパーになるためだけに存在するのかということですConsole.Out.WriteLine

IntelliSense を使用してこの小さなメソッドを見つけ、.NET リフレクターを開いてメソッドのコードを「逆コンパイル」したConsole.WriteLineところ、次のことがわかりました。

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

では、なぜWriteLineこのように実装されているのでしょうか。それは完全に単なる近道ですか、それとも別の理由がありますか?

4

2 に答える 2

62

Console.WriteLine静的メソッドです。Console.Outを受け取る任意のメソッドにパラメーターとして渡すことができる静的オブジェクトでTextWriterあり、そのメソッドは非静的メンバー method を呼び出すことができますWriteLine

stdoutこれが役立つ例としては、出力を( Console.Out)、stderr( Console.Error)、またはどこにも ( ) に送信したりSystem.IO.TextWriter.Null、実行時の条件に基づいて他のものに送信したりする、ある種のカスタマイズ可能なログ ルーチンがあります。

于 2009-07-19T02:57:36.137 に答える
21

Brad Abrams (Microsoft の CLR と .NET フレームワークの両方の創設メンバー) は、次のように述べています。

Console.WriteLine() は、単に Console.Out.WriteLine のショートカットですコンソールは WriteLine プロパティによってオーバーロードされ、より簡単に記述できるようになりました

出典: 本「The C# Programming Language by Anders Hejlsberg」。

于 2016-11-22T17:43:01.977 に答える