Как List <T> .IndexOf () выполняет сравнения пользовательских объектов?

Я написал класс объектов счета и держу статическийList из этих объектов счета. Моя программа перебирает каждую учетную запись в списке, выполняя некоторую работу с учетной записью, а затем сбрасывается наверх, когда достигает конца списка.

Моя проблема в том, что мне нужно иметь возможность повторно вставить учетную запись в список после того, как моя программа завершит работу с ней, с добавлением некоторой обновленной информации. Могу ли я сделать это, как написано ниже, используя функцию IndexOf () для проверки объекта в статическом списке, или произойдет сбой, потому что я добавил в него данные? Я неЯ не понимаю, какие поля он сравнивает, чтобы увидеть, совпадают ли два объекта.

Примечание: дубликаты в списке не допускаются, поэтому нет риска обновить неправильный элемент

public class Account
{
   public string name;
   public string password;
   public string newInfo;
}

public static class Resources
{
   private static List AccountList = new List();
   private static int currentAccountIndex = 0;

   public static Account GetNextAccount()
   {
      if (currentAccountIndex > AccountList.Count)
         currentAccountIndex = 0;
      return AccountList[currentAccountIndex++];
   }

   public static void UpdateAccount(Account account)
   {
      int index;
      if ((index = AccountList.IndexOf(account)) >= 0)
         AccountList[index] = account;
   }
}

public class Program
{
   public void PerformWork()
   {
      Account account = Resources.GetNextAccount();
      // Do some work
      account.newInfo = "foo";
      Resources.UpdateAccount(account);
   }
}

Ответы на вопрос(5)

Ваш ответ на вопрос