copying to a multidimensional array?

M

Mark Smith

I'm trying to copy data from a 1D array to a 2D array.
The obvious thing doesn't work:

int[,] twoDee = new int[2,2];
int[] oneDee = new int[2] { 1, 2 };
Array.Copy(oneDee, 2, twoDee, 2, 2);

This causes a RankException. But the MSDN documentation says:

When copying between multidimensional arrays, the array
behaves like a long one-dimensional array, where the rows
(or columns) are conceptually laid end to end.

This seems to suggest that there should be some way to accomplish
this, but I can't find any other syntax that's acceptable. I can
do it using a jagged 2D array, but I really wanted to avoid creating
lots of 1D subarray objects. Anybody know the trick?
 
G

Guest

I think you misinterpreted what the documentation says. "When copying <b>between</b> multidimensional array<b>s</b>", that would suggest to me what you need both src and dest to be multidimensional. also, if you look at a list of exceptions the method throws, you would see it clearly states that RankException occurs when src and dest have different ranks

I don't know if there's a prebuilt way of doing what you want. but I would just write my own routine to do the copying

----- Mark Smith wrote: ----

I'm trying to copy data from a 1D array to a 2D array
The obvious thing doesn't work

int[,] twoDee = new int[2,2]
int[] oneDee = new int[2] { 1, 2 }
Array.Copy(oneDee, 2, twoDee, 2, 2)

This causes a RankException. But the MSDN documentation says

When copying between multidimensional arrays, the arra
behaves like a long one-dimensional array, where the row
(or columns) are conceptually laid end to end

This seems to suggest that there should be some way to accomplis
this, but I can't find any other syntax that's acceptable. I ca
do it using a jagged 2D array, but I really wanted to avoid creatin
lots of 1D subarray objects. Anybody know the trick
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top