2016-09-22 14 views
0

2次元配列を作成しようとしています。2次元配列の列として配列を宣言する方法

HERESに私は何をしようとしている:

public int[] item0; 
    public int[] item1; 
    public int[] item2; 
    public int[] item3; 
    public int[] item4; 
    public int[] item5; 
    public int[] item6; 
    public int[] item7; 
    public int[] item8; 
    public int[] item9; 

     item0 = new int[22]; 
     item1 = new int[22]; 
     item2 = new int[22]; 
     item3 = new int[22]; 
     item4 = new int[22]; 
     item5 = new int[22]; 
     item6 = new int[22]; 
     item7 = new int[22]; 
     item8 = new int[22]; 
     item9 = new int[22]; 
     itemList = new int[10,22] { 
{item0}, 
{item1}, 
{item2}, 
{item3}, 
{item4}, 
{item5}, 
{item6}, 
{item7}, 
{item8}, 
{item9} 
}; 

しかし、私はそれが予想される長さを拾っていないことを私に言って、コンソールのエラーが発生します。

私は多くの古い質問を見回しましたが、このような配列を定義する方法は決して明確になりません。どんな助けもありがとう。

答えて

1

を行うすることをお勧めいたします:

var itemList = new int[][] { 
    item0, 
    item1, 
    new int[] { 1, 2, 3 }, 
    new int[] { 1, 2, 3, 4, 5, … }, 
    item4, 
    item5, 
    … 
}; 

私は既存のint[]配列(item0item1など)、および上記の例のインライン配列のインスタンス化(new int[] { … })が含まれます。さらに、ジグザグ配列の場合、itemListの単一の配列項目は同じ長さを持つ必要はないことに注意してください。これは、ギザギザの配列が実際には2次元ではないことを示しています。配列の配列です。

+0

おかげで、ジャグ配列は、ここでの答えのようです。しかし、別の問題が発生しています。if(itemList [0] [0] == 1)を使用するためのnull参照コンソールエラーが発生しています - 新しいギザギザの配列の内部で値を取得するにはどうすればいいですか? – Stephen

+1

@Stephen 'item [0]'は*配列*なので、初期化するまでデフォルト値は 'null'です。存在しない配列 'null [0]'のインデックスを作成しようとしています。 'var myObjectArray = new object [5];'を実行したときと同じ動作です。 'myObjectArray [0]'は 'null'です。配列が作成されると、そのメンバは配列の型のデフォルト値に初期化されます。 – InBetween

+0

@stakzよく私は持っていると思ったが、それでも何らかの理由でnullになる。私は基本的にitem0 = new int [22] {0,0,0,0,0,0 ...};を実行しました。次にitemList = new int [10] [];を実行します。それに続くitemList [0] = item0; - 私は(itemList [0] [0] == 0)場合は、null参照を取得していますが、私はすでに0として定義したか、または私はそれを初期化した後にもう一度定義する必要があります2番目の配列に?それはヌルに戻りますか? – Stephen

1

最初はすべてを行う必要はありません。多次元配列は、ギザギザのこと、あなたは単にさらに

itemList = new int[10,22]; 

をすれば、自動的にすべての内側の配列のサイズ22を作ることができない、あなたはとてもように、これを初期化することができます。

itemList = new int[10,22] { 
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 16, 17, 18, 19, 20, 21, 22}, 
    {1, 3, 5, 7, 9 ... 

のように。

0

これは

 var itemList = new int[][] { 
     item0, 
     item1, 
     item2, 
     item3, 
     item4, 
     item5, 
     item6, 
     }; 

あなたの問題を解決する必要がありますしかし、私はあなたが "ギザギザ" 配列としてitemListを宣言することができ、このようにそれ

 int[,] itemList = new int[,] 
     { 
      {1,2,3,4,5 }, 
      {1,2,3,4,5 }, 
      {1,2,3,4,5 }, 
     }; 
1

それはあなたがジャグ配列を使用したいとばかりにitemListの初期化子を変更する必要があるように見えます:

var itemList = new int[10][] { item0, item1, item2, item3, item4, item5, item6, item7, item8, item9 }; 
関連する問題