I\'m currently in the unfortunate position of having to call a VBA macro from C#, via the COM Interop. The macro returns an array of strings and looks something like:
Your code was
var result = (string[])xlApp.Run("Foo", ... missing args ...);
As you have pointed out there is different behaviour with a 1-based array, with a zero-based array in VB your code does work.
You can get at the data like this
var result = (Array)xlApp.Run("Foo", ... missing args ...);
var stringsResult = result.Cast[];
This gives you an IEnumerable of string