C# では、コンソールにエラーを出力したい場合は、次のように記述するだけです。
Console.Error.Write("Error!");
しかし、コンソールに警告を書き込もうとすると、何もないことがわかりました。
Console.Warning.Write("Warning!");
代わりに、次のように書く必要があります。
WarningException myEx = new WarningException("This is a warning");
Console.Write(myEx.ToString());
なぜこのように設計されているのでしょうか?
ベストアンサー1
これはConsole
、起動時にすべてのプロセスに関連付けられた 3 つのストリーム (1 つの標準入力ストリーム、1 つの標準出力ストリーム、および 1 つの標準エラー ストリーム) を持つ、はるかに古い慣用句に適応しているためです。
(ここでの標準名はConsole.In
、、でConsole.Out
あり、C の、&ではConsole.Error
なく、.NET の世界における名前です。)stdin
stdout
stderr
これは標準的な警告ストリームではありません。
コンソール アプリケーションの実行時に出力リダイレクトを使用すると、>file1.txt
標準出力は にリダイレクトされますfile1.txt
が、エラー出力はコンソールに引き続き表示されることに注意してください。(2>something
標準エラー出力をリダイレクトするか、2>&1
標準出力と同じ場所にリダイレクトするには を使用します)