2014-11-24 43 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的解决方案将可以工作。