排序交错数组包含null元素

问题描述:

我有一个交错数组声明如下排序交错数组包含null元素

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为常空值和数组排序得到全部为零。

任何提示?

+2

提示 - 循环,正确的OOP,辅助方法,'arrayA [1] .Sum()'。 – Kobi 2010-08-09 09:15:15

+0

你是否已经完全初始化'tmpA'?我看到你创建了第一个数组。但是那个数组中的12个数组有12个呢? – 2010-08-09 09:21:46

+0

kobi:thx。固定!杰夫:tmpA是2个其他参差不齐的数组的组合。它已初始化。但是,在tmpA数组中间有一个空条目。这是空的原因,我排序后得到所有的空值? – Ray 2010-08-09 09:26:46

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

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);   
}