我有一个声称像
的锯齿状数组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)
如果我理解正确,你的问题是,当任何一个数组为null时,你应该返回0,当你应该返回1或-1时,取决于哪个不是null,只有当两者都为null时才返回0。 / p>
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);
}