关于为什么这样的任何想法
    public Collection<Point> data = new Collection<Point>(){
            new Point{X=10,Y=20},
            new Point{X=20,Y=30},
            new Point{X=40,Y=20},
            new Point{X=10,Y=20}
           };
(注意相同的第一个和最后一个元素)给出错误
已添加具有相同键的项目.
如果您将最后一个元素更改为Y = 20.1或任何使其不同的元素,则它可以正常工作.您也可以随意添加元素并获得相同的结果.
问题显然是由于Point是一个值类型,因为如果你定义并使用一个点类它会消失,我知道在其他集合类型中使用结构有问题,但这与值和ref返回的区别有关类型.令我神秘的是,如果所有结构具有不同的字段值,则此方法有效.
原因是因为值类型的相等性基于其值 - 对于struct,它在所有字段中是相等的.
引用类型相等性基于引用本身,因此起作用.将结构值更改为全部不同也有效.
如果你只想要一个东西列表,只需使用List<Point>,我认为这将接受重复.
更新: 看起来您的集合类正在检测重复的条目,并且您正在尝试添加重复项.如果你想添加重复项,我会说你不能使用这个类.