添加重复项时引发异常的 .NET 集合

标签 .net collections unique duplicates

.NET 框架 (3.5) 中是否有一个集合(除了 Dictionary)在添加重复项时会引发异常?

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

编辑:是否有一个没有 (Key, Value) 的集合可以做到这一点?如果可能的话,我也想要 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);
        }
    }
}

最佳答案

但是如果该值已经存在,HashSet.Add 方法将返回 false - 这还不够吗?

HashSet<string> set = new HashSet<string>();
...
if (!set.Add("Key"))
    /* Not added */

关于添加重复项时引发异常的 .NET 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679500/

相关文章:

c# - 对象数组/集合

java - 按距当前 GPS 位置的距离对 GPS 位置集合进行排序

MySQL建表错误

.net - 图像比较以查找图像之间的相似性百分比

c# - 检测列重新排序 - ColumnDisplayIndexChanged 多次引发

.net - 在 .Net Core 2.0 上获取网络成本的最佳方法

.net - 检测到不支持的可能对象循环(异步和等待)

java - 添加通用集合排序方法时出错

java - 正则表达式匹配唯一字符的字符串

spring - 如何使用多个数据源设置 spring data jpa