排序交错数组包含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为常空值和数组排序得到全部为零。
任何提示?
答
如果我理解正确的话,你的问题是你返回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);
}
提示 - 循环,正确的OOP,辅助方法,'arrayA [1] .Sum()'。 – Kobi 2010-08-09 09:15:15
你是否已经完全初始化'tmpA'?我看到你创建了第一个数组。但是那个数组中的12个数组有12个呢? – 2010-08-09 09:21:46
kobi:thx。固定!杰夫:tmpA是2个其他参差不齐的数组的组合。它已初始化。但是,在tmpA数组中间有一个空条目。这是空的原因,我排序后得到所有的空值? – Ray 2010-08-09 09:26:46