Как создать свой метод Read()?

Но без перехода на новую строку и с возможностью вводить не один символ, а сразу целое число. Хочу написать метод, который будет отбрасывать символ новой строки. Что вроде WriteLine но без \n Какие есть варианты как это можно реализовать? Пытался реализовать ввод через Read, потом преобразовать номер asci в символ,а символ уже в цифру, и объеденить с другой цифрой в целое число. Но ввод был с задержкой, при вводе первого символа, была небольшая задержка, потом только ввод другого символа. Нужно как то сделать без задержки, как в WriteLine


Ответы (1 шт):

Автор решения: aepot

Можно проще, просто вернуть курсор на место.

static int ReadNumber()
{
    (int left, int top) = Console.GetCursorPosition();
    while (true)
    {
        string input = Console.ReadLine();
        if (int.TryParse(input, out int number))
        {
            // Console.SetCursorPosition(left + input.Length, top); // если надо курсор после успешного ввода поднять наверх
            return number;
        }
        Console.SetCursorPosition(left, top);
        Console.Write(new string(' ', input.Length));
        Console.SetCursorPosition(left, top);
    }
}

При неверном вводе ввод будет очищаться и всё будет сначала без перевода на новую строку. Я думаю, вы бы и сами смогли такое написать. new string(char, int) создаёт строку из char длиной int, в данном случае из пробелов такой же длины как введённая строка.

→ Ссылка