programing/C#

[C#] 2차원 배열 1차원 배열에 복사. (How to copy a row values from a 2D array into a 1D array?)

쪽제비 2018. 3. 26. 17:03

정말 한참을 고민하고 찾아보았다.

2차원 배열을 선언하고 사용하다가 갑자기 1차원 배열을 인자로 주어야 하는 상황이 발생한 것이다.

 

반복문으로 하기는 싫고, 틀림 없이 제공해 주는 기능이 있을 것이라 생각 했다.

 

그러다가 stack overflow 에서 답을 찾았다.

 

검색 :" c# convert 2d array to 1d"

참조 : https://stackoverflow.com/questions/797354/how-to-copy-a-row-of-values-from-a-2d-array-into-a-1d-array

 

매우 간단하게 해결한 것을 보았다..

이전에 찾은것은 전부 Array.copy() 를 사용했었는데 이것은 같은 차수여야만 가능했다.

 

이번에 찾은 것을 정리해 보자

 

int[,] oGridCells = {{1, 2}, {3, 4}};
int[] oResult = new int[4];
System.Buffer.BlockCopy(oGridCells, 0, oResult, 0, 16);

 

이런식으로 하면 원하는 배열을 추출할 수 있다.

다만 마지막 인자가 byte 단위 이므로 각자 원하는 데이터형의 크기만큼 곱해주어야 한다.

sizeof(int), sizeof(double) 등을 사용해서 곱해주면 간단하다...