Свойство In
In подменяют через
Console.SetIn и возвращают
в finally. Строку читают
ReadLine.
Вывод идёт в
Out.
Синтаксис
TextReader input = Console.In;
Пример
Давайте прочитать одну строку
из подменённого In:
using System;
using System.IO;
class Program
{
static void Main()
{
TextReader savedIn = Console.In;
Console.SetIn(new StringReader("abcde"));
try
{
string res = Console.In.ReadLine();
Console.WriteLine(res);
}
finally
{
Console.SetIn(savedIn);
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверить, что текущий
In совпадает с подменой:
using System;
using System.IO;
class Program
{
static void Main()
{
TextReader savedIn = Console.In;
var reader = new StringReader("x");
Console.SetIn(reader);
try
{
bool res = Console.In == reader;
Console.SetIn(savedIn);
Console.WriteLine(res);
}
finally
{
Console.SetIn(savedIn);
}
}
}
Результат выполнения кода:
True
Пример
Давайте восстановить In
в finally:
using System;
using System.IO;
class Program
{
static void Main()
{
TextReader savedIn = Console.In;
Console.SetIn(new StringReader("z"));
try
{
Console.In.ReadLine();
}
finally
{
Console.SetIn(savedIn);
}
bool res = Console.In == savedIn;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True