Консоль завершается после Console.Read(), даже с Console.ReadLine() в конце
Следующий код запрашивает ваше имя и фамилию.
class Program
{
static void Main(string[] args)
{
Console.Write("Enter your name: ");
string s = Console.ReadLine();
Console.WriteLine("Your name: " + s);
Console.Write("Enter your surname: ");
int r = Console.Read();
Console.WriteLine("Your surname: " + r);
Console.ReadLine();
}
}
После ввода имени программа успешно отобразит ваш ввод. Однако после ввода фамилии программа сразу останавливается. Насколько я понимаю, Console.Read() должна возвращать значение int первого символа строки, которую я ввожу (код ASCII?).
Почему программа завершает работу сразу после Console.Read()? Разве Console.ReadLine() не должна гарантировать, что программа остается открытой? Я использую Visual Studio 2012.
2 ответа
Когда вы говорите консоли ввести свою фамилию, вы запрашиваете один символ.
Console.Write("Enter your surname: ");
int r = Console.Read();
Это обязательно должен быть ReadLine, за которым следует другой ReadLine перед выходом. Вы, вероятно, вводите первый символ (в поле "Чтение"), затем следуют последующие символы, затем нажимаете клавишу ввода, чтобы принять фамилию, но на самом деле вы находитесь на линии ReadLine, которая завершит работу. Так:
class Program
{
static void Main(string[] args)
{
Console.Write("Enter your name: ");
string s = Console.ReadLine();
Console.WriteLine("Your name: " + s);
Console.Write("Enter your surname: ");
// change here
string surname = Console.ReadLine();
Console.WriteLine("Your surname: " + surname);
Console.ReadLine();
}
}
Программа не завершается после int r = Console.Read() для меня.
В зависимости от того, как было запущено консольное приложение, оно выполнит все строки кода и затем вернется. После этого программа закроется, так как для всех целей и задач она сделала то, что ей нужно. Он не собирается сидеть сложа руки и быть открытым, когда он закончится.
Если вы хотите, чтобы окно оставалось открытым, напишите Console.Readline()
в конце, и он останется открытым, пока не будет сделан какой-либо ввод. Я помню эту проблему, когда начинал, и дело не в неожиданном закрытии программы, а в том, что вы хотите увидеть результаты в консоли до ее закрытия.