У меня есть список, определенный как:
var Items = new List<IItem>();
Теперь есть ряд различных классов, имеющих этот интерфейс, и один из них является Consumable.В классе Consumable также перегружен оператор ==.Теперь у меня есть следующий код и не работает:
if(item1 == item2)
{
//code...
}
Это не работает.Я ставлю точку останова в перегрузке оператора ==, и она никогда не достигает этого.Когда я выполняю построчную отладку, оба элемента item1 и item2 имеют тип Consumable, оба GetType возвращает Consumable.Я даже попробую этот код:
var temp = item1.GetType();
var temp2 = item2.GetType();
if (temp == temp2)
{
//code...
}
, и это равенство результатов верно.Теперь, если я попробую это:
if(((Consumable)item1) == ((Consumable)item2))
{
//code...
}
, и это вызовет точку останова в перегрузке оператора ==.Зачем мне вручную приводить переменную, если при построчной отладке показывается, что они оба считают расходуемыми?Это потому, что я вытаскиваю их из списка IItems?