2017-02-22 3 views
0

У меня проблема с удалением элемента из общего списка. Добавление работы правильно, и я могу добавить новый элемент в список. Однако я не могу удалить элемент.Единство 5 Удалить из списка

Это мой код:

public List<Lista> equippedItemsIDListLocal = new List<Lista>(); 

    [Serializable] 
    public class Lista 
    { 
     public int playerID; 
     public int itemIDD; 

     public Lista(int newPlayerID ,int newItemID) 
     { 
      playerID = newPlayerID; 
      itemIDD = newItemID; 
     } 

    } 

и добавить и удалить эти строки:

equippedItemsIDListLocal.Add(new Lista(iID, itemID)); 

equippedItemsIDListLocal.Remove(new Lista(iID, itemID)); 

Где я ошибся?

ответ

3

Вы создать новый экземпляр Lista при вызове equippedItemsIDListLocal.Remove, таким образом, при сравнении экземпляров (а не значения внутри ваших экземпляров), то Remove не может найти первый Lista вы добавили, и не удаляет что-нибудь.

ли это вместо:

Lista newLista = new Lista(iID, itemID) ; 

equippedItemsIDListLocal.Add(newLista); 

equippedItemsIDListLocal.Remove(newLista); 

Функция Remove использует функцию Object.Equals для сравнения двух элементов. Функция сравнивает ссылки (что-то похожее на адрес памяти). Когда вы создаете экземпляр «A», вы получаете ссылку. При создании нового экземпляра ('B') вы получаете другую ссылку. Таким образом, Object.Equals(A, B) возвращает false.

Вы можете реализовать функцию Equals общего интерфейса IEquatable<T>, если хотите, и функция Remove вызовет ее для сравнения экземпляров.

public override bool Equals(object obj) 
    { 
     if (obj == null) return false; 
     Lista objAsLista = obj as Lista; 
     if (objAsLista == null) return false; 
     else return Equals(objAsLista); 
    } 

    public bool Equals(Lista other) 
    { 
     if (other == null) return false; 
     return (this.playerID.Equals(other.playerID) && this.itemIDD.Equals(other.itemIDD)); 
    } 

Проверьте следующую ссылку:

https://msdn.microsoft.com/en-us/library/cd666k3e(v=vs.110).aspx

+0

Спасибо ^^ Теперь я понимаю, как это должно выглядеть! –

Смежные вопросы