Как 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);
}
}