Я только что начал понимать код на C# и хотел попробовать консольное приложение. Достаточно базовый, и для этого потребуется цикл, чтобы выполнить некоторую работу, пока пользователь не решит выйти. Так выглядит моя программа сейчас.Программа читает предыдущий ввод
public void Method1(string[] args)
{
if (args.Length != 0)
{
DoWork(args);
ResetValues();
Loop(parameter);
}
else
{
Console.WriteLine("No arguments passed");
string helpMsg ...
Console.WriteLine(helpMsg);
}
public void Loop(parameter)
{
bool wantsContinue = true;
while (wantsContinue)
{
Console.WriteLine("What would you like to do now?\n-Exit\tWrite 'e'\n-Run again\tWrite 'r'");
ConsoleKeyInfo command = Console.ReadKey();
char key = command.KeyChar;
switch (key)
{
case 'e':
return;
case 'r':
Console.WriteLine("Please enter your commands");
string input = Console.ReadLine();
Method1(parameters);
break;
case 'h':
Console.WriteLine(helpMsg);
break;
default:
Console.WriteLine("\nInvalid argument. Enter again");
break;
}
}
}
public void MethodContinuous(input)
{
Console.WriteLine(input);
string[] args = input.Split(' ');
if (args.Length != 0)
{
DoWork(args);
}
else
{
Console.WriteLine("No arguments passed");
string helpMsg = ...
Console.WriteLine(helpMsg);
}
}
Однако, у меня возникает проблема, которую я не могу понять. Когда программа входит в цикл в первый раз, она правильно устанавливает параметры, но когда цикл продолжается, он дает мне вход пользователя из предыдущего прогона. Я, вероятно, делаю то, что не так, или Консоль работает по-другому. Может ли эксперт понять это?
Итак, что 'ProgramLoop()'? Что такое 'ResetValues ()'? –
изменил его. В основном я настраивал то, что собирался писать заранее, но думал, что у меня есть решение. Изменены имена методов и забыли обновить их. ProgramLoop был переименован в простой цикл. ResetValues просто сбрасывает значения моих переменных и ничего больше. Как вы, очевидно, можете сказать, я довольно новичок! :( –
Хорошо, неважно ... Тем не менее, что происходит в этих методах? И в 'DoWork()' тоже тоже? Как выглядит ваш 'main'? Я считаю, что вы в конечном итоге убьете свой стек ... –