2014-11-24 41 views
2

刪除我有一個類如下:定製的HashSet

public class User 
{ 
    public int ID { get; set; } 
    public int PPN { get; set; } 

    public User(int id, int ppn) 
    { 
     ID = id; 
     PPN = ppn; 
    } 
} 

其中我已經聲明它的類型的一個HashSet。

HashSet<User> users = new HashSet<User>(); 

現在,我想刪除下面的方法第5項:

public void Delete() { 
     users.Remove(5); 
} 

,但我得到了以下錯誤:

cannot convert from 'int' to 'User' 

任何人都知道問題是什麼,以及如何我能解決這個問題嗎?

+1

HashSet不保證順序。你可能想要一個不同的集合類型 – Jonesopolis 2014-11-24 13:05:11

回答

1

Anybody know what the issue is?

的的的Hashset明確的文件說,remove方法刪除指定的元素來自HashSet對象。而類型T的參數是要刪除的元素,而不是索引OR鍵或類似的東西。

http://msdn.microsoft.com/en-us/library/bb342694%28v=vs.110%29.aspx

how I can resolve this?

@Jonesy回答了您的意見。使用不同的集合類型(例如通用列表),因爲哈希集合不會保證順序,並且如果要刪除特定元素而不是第五個位置的任何元素,您將無法使用哈希集合執行此操作。

如果您不在乎第五位的元素是什麼,而您只是想刪除它,那麼@Tim Schmelter的解決方案將可以工作。