Я пытаюсь понять, что происходит с Console.ReadKey()
против Console.ReadKey(true)
. Я понимаю, что включение true
предотвратит отображение ключа на консоли, но при использовании Console.Clear();
возникает странное поведение, поэтому я должен сказать, что этот код C # компилируется и выполняется на Pixel C (android) таблетки. Я не знаю, ведет себя ли он так же в Windows.
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp_Shell
{
public static class Program
{
public static void Main()
{
string[] str = new String[5] {"one","two","three","four","five"};
foreach(string s in str)
{
Console.WriteLine(s);
}
Console.ReadKey(true);
Console.Clear();
foreach(string s in str)
{
Console.WriteLine(s);
}
}
}
}
При выполнении эта консоль будет отображать ...
one
two
three
four
five
... после чего я могу нажать клавишу, очистить консоль и снова отобразить текст.
Однако, если я изменю Console.ReadKey(true);
на Console.ReadKey();
, то при выполнении будет получен исходный текст, как и ожидалось, и после нажатия клавиши будет отображаться только ...
one
two
Наконец, выполнение кода двумя способами, описанными выше, но с дополнительным изменением удаления строки Console.Clear();
приводит к тому, что весь текст отображается должным образом (без очистки экрана), с той разницей, что при использовании Console.ReadKey();
любая нажатая отображаемая клавиша также записывается на консоль (что я и ожидал).