Разработка приложений на языке C#. Полезные настройки. Особые спецификаторы формата, страница 34

                   Console.Write ("\n\t\tList has been changed. Save (y/n)?  ");

                   string s = Console.ReadLine ();

                   if (s.Equals ("Y") || s.Equals ("y"))

                         Write ();

             }

  }

  public void Sort ()

  {

    if (men.Count == 0)

    {

      Console.WriteLine ("\n\tList is empty");

      return;

    }

    switch (SortMenu ())   // Установите режим сортировки

    {

    default: return;

    case 'n': /* Ваш код */ break;

    case 'a': /* Ваш код */ break;

    case 's': /* Ваш код */ break;

    }

    men.Sort ();

    Show ();

  }

  public void Work ()

  {

    Console.WriteLine ("\n\t\t Linear List");

    while (true)

    {

      switch (Menu ())

      {

      case 'q': Quit (); return;

      case 's': Show (); break;

      case 'a': Add (); break;

      case 'd': Delete (); break;

      case 'e': Edit (); break;

      case 't': Sort (); break;

      case 'r': Read (); break;

      case 'w': Write (); break;

      case 'h': Handle (); break;

      }

    }

  }

  public void Edit ()

  {

    if (men.Count == 0)

    {

      Console.WriteLine("List is empty");

      return;

    }

    while (men.Count > 0)

    {

                   Console.Write("\n\tEdit\t0...{0}  (0 - to Quit): ", men.Count);

                   int n = Helper.AskInt("", 0, men.Count);

                   if (n == 0)

                         break;

                   Console.Write("\nEdit ");

                   men[n - 1].Edit();                   // Здесь не работает индексатор

                   bModified = true;

                   Show();

    }

  }

  public char Menu ()

  {

    Console.Write ("\n" +

      "\n\t\tq - Quit\tt - Sort" +

      "\n\t\ts - Show\tr - Read" +

      "\n\t\ta - Add \tw - Write" +

      "\n\t\td - Delete\te - Edit" +

      "\n\t\th - Handle\n\n");

    return Console.ReadLine().ToLower()[0];

  }

  public char SortMenu ()

  {

    Console.Write ("\n\t\tSorting\n" +

      "\n\t\tn - By Name" +

      "\n\t\ta - By Age" +

      "\n\t\ts - By Status" +

      "\n\t\tq - Quit\n\n");

    return Console.ReadLine ().ToLower ()[0];

  }

  public char ManMenu ()

  {

    Console.Write (

      "\n\t\ts - Student" +

      "\n\t\tp - Professor" +

      "\n\t\tq - Quit\n\n");

    return Console.ReadLine ().ToLower ()[0];

  }

  public char ShowMenu ()

  {

    Console.Write (

      "\n\t\tf - First Names" +

      "\n\t\ts - Surnames" +

      "\n\t\tn - Normal" +

      "\n\t\tq - Don't show\n\n");

    return Console.ReadLine ().ToLower ()[0];

  }

  public char ReadWriteMenu ()

  {

    Console.Write ("\n" +

      "\n\t\tq - Quit" +

      "\n\t\tt - Text" +

      "\n\t\tb - Binary" +

      "\n\t\ts - Soap" +

      "\n\t\tx - XML\n\n");

    return Console.ReadLine ().ToLower ()[0];

  }

  void Handle ()

  {

    if (men.Count == 0)

    {

      Console.WriteLine ("List is empty");

      return;

    }

    switch (ShowMenu ())

    {

    case 'q': return;

    case 'f':

      HandleMen ("\n\tList of Man Names:", new ManDelegate (Man.Firstname));

      break;

    case 's':

      HandleMen ("\n\tList of Man Surnames:", new ManDelegate (Man.Surname));

      break;

    case 'n': Show (); break;

    }

  }

  void HandleMen (string title, ManDelegate func)

  {

    Console.WriteLine (men.Count == 0 ? "\n\tList is empty\n" : title);

    for (int i = 0; i < men.Count; i++)

      Console.WriteLine ("  {0}. {1}", i + 1, func (men[i]));

  }

  // Индексатор нам не нужен, но создайте его в качестве упражнения

  public Man this[int id]

  {

    get

    {

      // Ваш код. Не забудьте про защиту от неправильных значений id

    }

    set

    {