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

ジャグ配列の各行には、12intの2つの配列があります。

2番目の配列の12個のintをすべて追加して配列を並べ替えたいのですが、最小のものが最初になります。

ただし、私の主な問題は、オブジェクトx、yがnullであることが多く、ソートされた配列がすべてゼロになることです。

任意のヒント?

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたの問題は、どちらかの配列が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);          
}
于 2010-08-09T10:18:13.520 に答える