在C#中是否有一个集合不会让您向其中添加重复的项目?例如,傻类的仅允许.NET中唯一项目的集合?
public class Customer {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public override int GetHashCode() {
return (FirstName + LastName + Address).GetHashCode();
}
public override bool Equals(object obj) {
Customer C = obj as Customer;
return C != null && String.Equals(this.FirstName, C.FirstName) && String.Equals(this.LastName, C.LastName) && String.Equals(this.Address, C.Address);
}
}
将下面的代码(显然)抛出一个异常:
Customer Adam = new Customer { Address = "A", FirstName = "Adam", LastName = "" };
Customer AdamDup = new Customer { Address = "A", FirstName = "Adam", LastName = "" };
Dictionary<Customer, bool> CustomerHash = new Dictionary<Customer, bool>();
CustomerHash.Add(Adam, true);
CustomerHash.Add(AdamDup, true);
但是有没有将同样保证唯一性一类,但没有KeyValuePairs?我认为HashSet<T>
会这样做,但阅读文档看来,类只是一个集合实现(去图)。
我不明白你的问题'HashSet'。 MSDN说:“HashSet 类提供了高性能的集合操作,一个集合是一个不包含重复元素的集合,其元素没有特定的顺序。” –
2011-03-01 17:11:20
你能解释一下为什么'HashSet'不够? –
JaredPar
2011-03-01 17:11:46
@ mootinator:'Dictionary'class *不保证任何顺序。 –
LukeH
2011-03-01 17:23:15