1

我有一个锯齿状数组声明为

int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][];

我试图用这段代码对这个数组进行排序:

Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer());

和我的班级:

  public int Compare(object x,object y)
    {
        if (x == null || y == null)
            return 0;
        int[][] arrayA = (int[][])x;
        int[][] arrayB = (int[][])y;

         int resultA = arrayA[1].Sum();
         int resultB = arrayB[1].Sum();

        return resultA.CompareTo(resultB);          
    }

每行锯齿状数组有 2 个数组,包含 12 个整数。

我想通过添加第二个数组的所有 12 个整数来对数组进行排序,最小的应该是第一个。

但是我的主要问题是对象 x,y 通常为空,并且排序后的数组全为零。

有小费吗?

4

1 回答 1

1

如果我对您的理解正确,您的问题是当任何一个数组为空时返回 0,当您应该返回 1 或 -1 时取决于哪个不为空,而只有当两者都为空时才返回 0。

public int Compare(object x,object y)
{
    // changed code
    if (x == null && y == null)
        return 0;
    if (x == null)
        return 1;
    if (y == null)
        return -1;
    // end of changed code
    int[][] arrayA = (int[][])x;
    int[][] arrayB = (int[][])y;

     int resultA = arrayA[1].Sum();
     int resultB = arrayB[1].Sum();

    return resultA.CompareTo(resultB);          
}
于 2010-08-09T10:18:13.520 回答