Я пытаюсь использовать метод С# Console.ReadLine()
для ввода данных пользователем с консоли, а затем печатать текст в той же строке.
Используемый код:
using System;
namespace Test {
class Program {
static void Main(string[] args) {
Console.ReadLine();
Console.Write(" out");
}
}
}
Чего я жду от консоли:
in out
Что на самом деле производится:
in
out
Обратите внимание, что in
здесь вводится в консоли.
Будем очень благодарны любой помощи. Спасибо!
-Крис
Отвечает ли это на ваш вопрос? Разница между Console.Read() и Console.ReadLine()?
@ДжимГ. Да и нет. Теперь я понимаю, что мне следует использовать Console.ReadLine()
, но использование этого метода вместо Console.Read()
дает те же результаты. Я отредактировал сообщение, чтобы отразить это.
Вам нужно будет использовать метод ввода, который не повторяет то, что вводит пользователь.
Проблема в том, что он автоматически повторяет пользовательский ввод, включая новую строку, когда нажата клавиша ввода. Таким образом, вы должны остановить его от повторения ввода и справиться с этим самостоятельно.
Вы можете сделать это, используя Console.ReadKey(Boolean) и передав true
для перехвата ключа и записи его в вывод только в том случае, если это не ключ ввода.
Это будет выглядеть так:
using System;
namespace Test {
class Program {
static void Main(string[] args) {
while (true) {
var key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter) {
break;
} else {
Console.Write(key.KeyChar);
}
}
Console.WriteLine(" out");
}
}
}
Примечание: это, однако, не будет обрабатывать специальные клавиши, такие как Backspace или клавиши курсора, как может ожидать пользователь.
Вы уверены, что хотите использовать
Console.Read()
, а неConsole.ReadLine()
? learn.microsoft.com/en-us/dotnet/api/…