除了字典(Dictionary),.NET框架(3.5)中是否有一个集合会在添加重复项时抛出异常?
HashSet在此处不会抛出异常:
HashSet<string> strings = new HashSet<string>();
strings.Add("apple");
strings.Add("apple");
而词典则:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("dude", "dude");
dict.Add("dude", "dude"); //throws exception
编辑:有没有不需要(键,值)的集合可以做到这一点?如果可能,我还想要AddRange...
我自己写了一个:
public class Uniques<T> : HashSet<T>
{
public Uniques()
{ }
public Uniques(IEnumerable<T> collection)
{
AddRange(collection);
}
public void Add(T item)
{
if (!base.Add(item))
{
throw new ArgumentException("Item already exists");
}
}
public void AddRange(IEnumerable<T> collection)
{
foreach (T item in collection)
{
Add(item);
}
}
}