What Gus is saying is that you should be able to pass the first index of the array (instead of the array) and the length, and then just increment the pointer by one in your RLP code.
So your function would look like:
void DoSomething(byte firstByte, int length)
byte* arrayAddress = &firstByte;
for (int i = 0; i < length; i++)
//Manipulate the byte here
In the full framework there are ways to get native pointers to things, but I’m not sure if it’s supported by the microframework. If that’s the case, then your function prototype can just be:
void DoSomething(byte *array, int length)
And in C# you can use the addressof operator just like in c++, so you would pass your array like this:
byte myArray = new byte;
C# (full framework at least) supports pointers and addressof operators natively, but must be wrapped in an Unsafe block.