Console.ReadKey () Странное поведение? - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь понять, что происходит с 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(); любая нажатая отображаемая клавиша также записывается на консоль (что я и ожидал).

...