我试图调试一个问题并遇到了这个问题。也许有人可以向我解释。这是有问题的代码
public int Compare(CustomClass rt1, CustomClass rt2)
{
if (rt1 == null & rt2 == null)
return 0;
if (rt1 == null)
return -1;
if (rt2 == null)
return 1;
if (rt1.yPos < rt2.yPos)
return -1;
if (rt1.yPos == rt2.yPos)
{
if (rt1.xPos < rt2.xPos)
return -1;
if (rt1.xPos == rt2.xPos)
return 0;
}
return 1;
}
我得到的错误是:当 Array.Sort 调用 x 时,IComparer(或它所依赖的 IComparable 方法)没有返回零。比较(x)。
更有趣的是,如果我在调试模式下从 VS 运行它,则不会发生错误。仅当我将其置于发布模式并点击“不调试就开始”时。有人知道为什么会发生这种情况吗?我通过添加“if(rt1 == rt2) return 0;”解决了这个问题 行到函数的开头,但真的很想知道发生了什么。
额外信息:是的,这实现了 IComparer 类