Well there is one not-so-obvious solution...
In the C# program, add this as another "help method":
public unsafe float[] GetFloatArray(float* floats, int count)
{
float[] retVal = new float[count];
for (int i = 0; i < count; i++)
{
retVal[i++] = *floats;
floats++;
}
return retVal;
}
Its not obvious because most people don't realize that .NET happily works with pointer types just like C++. You will have to compile the program with the "unsafe" flag set (Properties->Build->Allow unsafe code, or /unsafe from the command line).
Now I haven't tried the above code so there may be tweaks you have to do, but the concept is there, you can convert from a floating point pointer and a length to a float array.