Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对包含空元素的交错数组进行排序_C#_Sorting_Jagged Arrays - Fatal编程技术网

C# 对包含空元素的交错数组进行排序

C# 对包含空元素的交错数组进行排序,c#,sorting,jagged-arrays,C#,Sorting,Jagged Arrays,我有一个锯齿状数组,声明如下 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)

我有一个锯齿状数组,声明如下

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通常为空,排序后的数组都为零


有什么提示吗?

如果我理解正确,您的问题是当其中一个数组为null时返回0,根据哪个数组不是null,您应该返回1或-1,只有当两个数组都为null时才返回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);          
}

如果我理解正确,您的问题是当其中一个数组为null时返回0,根据哪个数组不为null,您应该返回1或-1,而只有当两个数组都为null时才返回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);          
}

提示-循环、正确的OOP、助手方法、
arrayA[1].Sum()
。您是否已完全初始化
tmpA
?我看到你创建了第一个数组。但是这个阵列中的两个12的阵列呢。固定的!杰夫:tmpA是另外两个锯齿阵列的组合。它已初始化。然而,在TMPA数组的中间正好有一个空项。这是否是我在排序后得到所有空值的原因??提示-循环、正确的OOP、帮助器方法、
arrayA[1].Sum()
。您是否已经完全初始化了
tmpA
?我看到你创建了第一个数组。但是这个阵列中的两个12的阵列呢。固定的!杰夫:tmpA是另外两个锯齿阵列的组合。它已初始化。然而,在TMPA数组的中间正好有一个空项。这是我在排序后得到所有空值的原因吗??