Так я написал этот код в моем MainMenu
классе и он работал отлично:Возвращаясь из цикла в то время как
public void Start() //Start method
{
bool done = false;
while (!done)
{
ShowMeny();
SwitchMethod();
NumChoice = InputHelper.ReadIntegerConsole();
if (NumChoice == 0) // if the input is 0, set done to true and stop the loop
done = true;
// ...
Однако здесь я написал в другом классе, и при нажатии кнопки 0, то должен вернуться к моему MainMenu
. Почему я не могу использовать один и тот же код? Все это делает цикл ShowMenu
.
private void CalcMenu()
{
bool Done = false;
while (!Done)
{
ShowMenu();
if (MenuChoice == 0)
Done = true;
}
}
Если вы нажмете 0 здесь, он повторяется 2 раза, а затем выходит. Вот весь класс:
namespace ConsoleApplication1
{
class WorkingSchedule
{
int MenuChoice = -1;
public void Start()
{
ShowMenu();
CalcMenu();
//LoopOneWeeks();
//LoopTwoNights
//ShowResults();
}
private void ShowMenu()
{
Console.WriteLine("Välj det schema som du vill se:");
Console.WriteLine("_______________________________");
Console.WriteLine("1. Visa en lista de veckor du ska jobba");
Console.WriteLine("2. Visa en lista de nätter du ska jobba");
Console.WriteLine("0. För att återvända till huvudmenyn");
MenuChoice = InputHelper.ReadIntegerConsole();
Console.WriteLine("Ditt val: " + MenuChoice);
}
private void CalcMenu()
{
bool Done = false;
while (!Done)
{
ShowMenu();
if (MenuChoice == 0)
{
Done = true;
ReturnMainMenu();
}
else if (MenuChoice == 1)
{
}
else if (MenuChoice == 2)
{
}
}
}
private void ReturnMainMenu()
{
MenuProgram MPObj = new MenuProgram();
MPObj.Start();
}
InputHelper.ReadIntegerConsole является входным вспомогательным классом
Где произносится 'MenuChoice', и где он назначен? –
@MichaelDunlap Его переменная экземпляра. – Baxtex
И вызывает ли вызов ShowMenu() 'код, который присваивает' MenuChoice'? –