정말 한참을 고민하고 찾아보았다.
2차원 배열을 선언하고 사용하다가 갑자기 1차원 배열을 인자로 주어야 하는 상황이 발생한 것이다.
반복문으로 하기는 싫고, 틀림 없이 제공해 주는 기능이 있을 것이라 생각 했다.
그러다가 stack overflow 에서 답을 찾았다.
검색 :" c# convert 2d array to 1d"
매우 간단하게 해결한 것을 보았다..
이전에 찾은것은 전부 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) 등을 사용해서 곱해주면 간단하다...
'ETC > C#' 카테고리의 다른 글
[C#] 다른 프로세스에 키보드 이벤트 발생 (0) | 2017.04.18 |
---|---|
[C#] 32bit dll 사용 시 "...호출 결과 스택이 불안정하게 되었습니다." 에러 (1) | 2017.03.20 |
[C#] 비프(Beep)음 내기 (0) | 2017.02.21 |
[C#] 시리얼 포트 검색 (0) | 2017.02.10 |
[C#] 배열 0으로 초기화(Enumerable.Repeat) (0) | 2017.01.24 |