Свойство Error
Error отделён от
Out.
Подменяют через Console.SetError
и восстанавливают в finally,
как при работе с выводом через
SetOut.
Синтаксис
TextWriter error = Console.Error;
Пример
Давайте записать в Error
через буфер:
using System;
using System.IO;
class Program
{
static void Main()
{
TextWriter saved = Console.Error;
var buffer = new StringWriter();
buffer.NewLine = "\n";
Console.SetError(buffer);
try
{
Console.Error.WriteLine("abcde");
string res = buffer.ToString();
Console.SetError(saved);
Console.WriteLine(res);
}
finally
{
Console.SetError(saved);
}
}
}
Результат выполнения кода:
"abcde\n"
Пример
Давайте убедиться, что запись
в Error не попадает в
Out:
using System;
using System.IO;
class Program
{
static void Main()
{
TextWriter savedOut = Console.Out;
TextWriter savedErr = Console.Error;
var outBuf = new StringWriter();
var errBuf = new StringWriter();
errBuf.NewLine = "\n";
Console.SetOut(outBuf);
Console.SetError(errBuf);
try
{
Console.Error.WriteLine("abcde");
string res = outBuf.ToString();
Console.SetOut(savedOut);
Console.SetError(savedErr);
Console.WriteLine(res == "");
}
finally
{
Console.SetOut(savedOut);
Console.SetError(savedErr);
}
}
}
Результат выполнения кода:
True
Пример
Давайте вернуть Error
после подмены:
using System;
using System.IO;
class Program
{
static void Main()
{
TextWriter saved = Console.Error;
var buffer = new StringWriter();
Console.SetError(buffer);
try
{
Console.Error.Write("x");
}
finally
{
Console.SetError(saved);
}
bool res = Console.Error == saved;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True