2013-05-20 1 views

답변

3

아니요, 다차원 배열을 사용할 수 없습니다. 배열의 크기는 고정되어 있으며 컴파일러는 배열에 할당 할 수있는 크기가 아닙니다.

multiArray[0, 0..4] = { 1, 2, 3, 4, 5 }; 

나이 : 그러나

multiArray[0..4, 0] = { 1, 2, 3, 4, 5 }; 

, 당신이 들쭉날쭉 배열을 사용할 수 있습니다

int[][] multiArray = new int[5][]; 
multiArray[0] = new[] { 1, 2, 3, 4, 5 }; 
+0

감사합니다. – reformed

+0

-1 : 가능합니다. 특히 깨끗하지는 않지만 확실히 가능합니다. –

0

을이 작업을 수행하는 것을 의미하는 경우 컴파일러가 알고 얼마나 또한

, 당신이 원하는 것은 배열의 각 요소를 같은 행에 저장하는 것인데 multiArray의 다른 열을 저장하는 것입니다.

multiArray[0][0] = 0; 
multiArray[0][1] = 1; 
multiArray[0][2] = 2; 
multiArray[0][3] = 3; 
multiArray[0][4] = 4; 
multiArray[0][5] = 5; 

나는 이것이 당신이하려는 일이라고 생각합니다. for 루프를 사용하여 이것을 단순화 할 수도 있습니다.

+0

이것은 다차원 배열에서 작동하지 않습니다 ... – pascalhein

+1

나는 각 슬롯을 개별적으로 할당하지 않아도되도록 노력하고 있습니다. – reformed

0

.NET 다차원 배열은 행 우선 순서로 저장되므로 Buffer.BlockCopy을 사용하여 한 번에 전체 행을 채울 수 있습니다. 이 메서드는 과 같은 메서드와 달리 요소가 아니라 바이트에서 작동하므로 sizeof(int)을 사용해야합니다.

int[,] multiArray = new int[5, 5]; 

int rowIndex = 0; 
int[] rowData = { 0, 1, 3, 4, 5 }; 

int destOffset = rowIndex * sizeof(int) * multiArray.GetLength(0); 
Buffer.BlockCopy(rowData, 0, multiArray, destOffset, rowData.Length * sizeof(int)); 
관련 문제