@nordwind2013

Как повторить последнее действие в приложении?

Вот что по тз
При запуске консоли пользователю должна быть предоставлена возможность выбрать запускаемое задание. После завершения выполнения задания необходимо спросить у пользователя, хочет ли он повторить текущее задание, либо выбрать другое, либо выйти из приложения.


Не могу сообразить как повторить предыдущее действие, в случае если пользователь выбрал повторить. Необходимо все выполнить без хардкода.
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Действие выполнять в отдельном методе, а потом просто вызвать этот метод повторно. Примерно так:
static Action lastAction = null;

static void AnyAction()
{
  Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
  Thread.Sleep(3000);
}

static void Repeat()
{
  Console.WriteLine("Хотите повторить? [Д/н]");

  if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
  {
    Console.WriteLine();
    lastAction();
    Repeat();
  }
}

static void Main(string[] args)
{
  lastAction = AnyAction;
  lastAction();
  Repeat();
}

Или использовать очереди и добавлять действие в очередь при необходимости выполнить повтор:

static Queue<Action> actions = new Queue<Action>();

static void AnyAction()
{
  Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
  Thread.Sleep(3000);
}

static void Main(string[] args)
{
  actions.Enqueue(AnyAction);

  while (actions.Count > 0)
  {
    actions.Dequeue()();

    Console.WriteLine("Хотите повторить? [Д/н]");

    if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
    {
      Console.WriteLine();
      actions.Enqueue(AnyAction);
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы