2017-05-20 12 views
0

、下記のエラーが発生しました。
は暗黙キャストタイプ([] [] int型)私は私がしようとすると、[] []</p> <p>をintにint型[<em>、</em>]をキャストすることができますどのように

int[*,*] int[][]に」私の目的は、最初のジャグ配列を作成し、2次元配列に変換されたタイプを変換することができません。

private int[][] initStaticBoard() 
    { 

     int[,] board = new int[,] { 
      {0,0,0,0,0}, 
      {0,0,0,0,0}, 
      {0,0,0,0,0}, 
      {0,0,0,0,0}, 
      {0,0,0,0,0} 
     }; 
     int[][] result = board; 

     return result*emphasized text*; 
    } 

答えて

4

正方形アレイとギザギザアレイの間にキャストはありません。

public static T[][] SquareArrayToJAggedArray<T>(T[,] square) 
{ 
    T[][] jagged = new T[square.GetLength(0)][]; 

    for (int i = 0; i < jagged.Length; i++) 
    { 
     jagged[i] = new T[square.GetLength(1)]; 

     for (int j = 0; j < jagged[i].Length; j++) 
     { 
      jagged[i][j] = square[i, j]; 
     } 
    } 

    return jagged; 
} 

そしてそうのようにそれを呼び出す:あなたはジャグ配列に boardを再構築する必要があります

private int[][] initStaticBoard() 
{ 
    int[,] board = new int[,] { 
     {0,0,0,0,0}, 
     {0,0,0,0,0}, 
     {0,0,0,0,0}, 
     {0,0,0,0,0}, 
     {0,0,0,0,0} 
    }; 

    int[][] result = SquareArrayToJaggedArray(board); 
    return result; 
} 

むしろ変換を心配するよりも、しかし、私はちょうどあなたがものを選ぶかということをお勧めします他の人とそれに固執する。 2つの間で変換するには、新しい配列に新しいメモリを割り当てる必要があります。これは、大きな配列を扱ったり、あまり頻繁に変換したりする場合には、かなり高速になります。さらに、再構成のために、新しい配列の変更は古い配列に影響を及ぼさず、その逆もありません。

表しているデータが幅と長さが固定されている構造体の場合は、正方形の配列を使用します。異なるサブアレイの長さが異なる場合は、ギザギザの配列を使用します。

0

ギザギザの配列は次のように初期化することができます。

int[][] board = { new int[5], new int[5], new int[5], new int[5], new int[5] }; 
関連する問題

 関連する問題