gpt4 book ai didi

c# - list.Sort ArgumentException 错误 : IComparer doesn't not return 0(null)

转载 作者:太空狗 更新时间:2023-10-30 00:21:25 26 4
gpt4 key购买 nike

我有以下问题,我不知道它是从哪里来的。非常感谢您的帮助。

代码:

List<Point> lst = new List<Point>();
lst.Add(new Point(0, -2));
lst.Add(new Point(-1, -2));

lst.Sort(delegate (Point x,Point y)
{
if (x.X == 0)
return -1;
else if (y.X == 0)
return 1;
else
{
double retVal1 = x.Y * 1.0 / -x.X;
double retVal2 = y.Y * 1.0 / -y.X;
int retVal = -Math.Sign(retVal1 - retVal2);
return retVal;
}
});

如果执行,我会收到一个 ArgumentException,指出 IComparer 不会返回 0(空)。但是,它实际上只能返回 -1、0 和 1,或者?

非常感谢您的帮助!

啊,顺便说一句,我正在使用 .NET 3.5

最佳答案

实际上,错误消息说:IComparer(或其依赖的 IComparable 方法)在 Array.Sort 调用 x 时未返回零。比较(x)。 x: '' x's type: 'Point' IComparer: 'System.Array+FunctorComparer`1[System.Drawing.Point]'

如果对象相同,则必须返回 0:

    lst.Sort(delegate(Point x, Point y) {
if (x.X == y.X && x.Y == y.Y) { // you are missing this
return 0;
}
if (x.X == 0)
return -1;
else if (y.X == 0)
return 1;
else {
double retVal1 = x.Y * 1.0 / -x.X;
double retVal2 = y.Y * 1.0 / -y.X;
int retVal = -Math.Sign(retVal1 - retVal2);
return retVal;
}
});

关于c# - list.Sort ArgumentException 错误 : IComparer doesn't not return 0(null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com