2017-05-20 1 views
0

가 [] [] [] int로 어떻게캐스트 유형 (INT [*, *]) (INT [] []) 내가 INT 캐스트 할 수

내가 시도 아래 주어진 오류가 발생했습니다.
암시 적 형식을 변환 할 수 없습니다

내 목표는 먼저 2 차원 배열로 변환 한 후 가변 배열을 만들고있다 "int[*,*]int[][]에".

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

를 대신하지만, 변환에 대한 걱정보다, 난 그냥 당신이 선택하는 것이 좋습니다 것 중 하나 또는 다른 사람과 그것에 충실하십시오. 둘 사이의 변환은 새 배열에 대해 새 메모리를 할당하는 것과 관련이 있습니다. 큰 배열을 처리하거나 너무 자주 변환하는 경우 꽤 빨리 추가 할 수 있습니다. 또한 재구성으로 인해 새 배열의 변경 사항은 이전 배열에 영향을 미치지 않으며 그 반대의 경우도 마찬가지입니다.

나타내는 데이터가 너비와 길이가 고정 된 구조 인 경우 사각형 배열을 사용하십시오. 다른 하위 배열의 길이가 다른 경우 지그재그 배열을 사용하십시오.

0

들쭉날쭉 한 배열은 다음과 같이 초기화 할 수 있습니다 :

int[][] board = { new int[5], new int[5], new int[5], new int[5], new int[5] };