0

asp.net mvc 3 ビューで使用するダミー データを作成したいと考えています。次のコードは、ビューにデータを渡すコントローラーの一部です。

List<KeyValuePair<int, int>> dummyData = new List<KeyValuePair<int, int>>();
                dummyData.Add(new KeyValuePair<int, int>(1,1));
                dummyData.Add(new KeyValuePair<int, int>(1,2));
                dummyData.Add(new KeyValuePair<int, int>(2,1));
                dummyData.Add(new KeyValuePair<int, int>(3,1));
                dummyData.Add(new KeyValuePair<int, int>(4,1));
                dummyData.Add(new KeyValuePair<int, int>(4,2));
                dummyData.Add(new KeyValuePair<int, int>(4,3));
                dummyData.Add(new KeyValuePair<int, int>(4,4));

名前が示すように、これは私のダミー データです。この背後にある考え方は、最初の数値がテーブルの RowNumber を表し、2 番目の数値が ColumnNumber を表すということです。同じ行に関連しているが、異なる列番号を持つレコードをどうにかして結合したいと考えています。このために、2 次元配列を使用することにしました。

int dummyCount = dummyData.Count;

            List<KeyValuePair<int, int>>[,] dummyArray = new List<KeyValuePair<int, int>>[dummyCount,dummyCount];

            int index1 = -1;
            int index2 = 0;

            for (int i = 0; i < dummyCount; i++)
            {

                int tempColNum = 1;
                if (dummyData[i].Value != tempColNum)
                {
                    dummyArray[index1, index2].Add(dummyData[i]);
                    index2++;
                }
                else
                {
                    index1++;
                    index2 = 0;
                    dummyArray[index1, index2].Add(new KeyValuePair<int, int>(dummyData[i].Key, dummyData[i].Value));
                }
            }

しかし、ここdummyArray[index1, index2].Add(new KeyValuePair<int, int>(dummyData[i].Key, dummyData[i].Value));にたどり着くと、タイトルからエラーが発生します: Object reference not set to an instance of an object.。もともと私は試してみdummyArray[index1, index2].Add(dummyData[i]);ましたが、同じエラーが発生しました。

4

3 に答える 3

7

ダミー配列は初期化されていません。すべてのセルが null です。次のように、各セルにリストを作成する必要があります。

if (dummyArray[index1, index2] == null) 
  dummyArray[index1, index2] = new List<KeyValuePair<int, int>>()

また、コードで無効なインデックス参照が発生する可能性があります。最初のサイクルの場合

if (dummyData[i].Value != tempColNum)

true と評価され、インデックス [-1,0] のダミー配列から要素を抽出しようとします。

于 2013-04-23T09:35:03.267 に答える
0

両方のコード フラグメントが実際には接続されていないようです。2 番目のフラグメントでは、要素ではなくリストのみを作成する新しい dummyArray を作成します。そして、2 番目のフラグメントの残りの要素を使い始めます。

リストの作成と使用の間に Fragment one のような要素を追加する必要があります。

于 2013-04-23T09:37:05.387 に答える