dkoder wrote: however, is there not a more efficient way to pass arrays to a function??? a pointer takes 4 bytes, whilst my 1k array of a class using doubles takes much more memory. Actually, you're not passing a copy of the array: just like in C++, you're passing a pointer to the array. In C#, everything, but the native types (int, char, double, float, decimal) are pointers under the hood. Try changing the array inside the function and you'll see that what you're passing is actually a pointer. Yes, even I am blogging now!