What the heck is a 'function(System.Array): void' Type?

I posted this a couple of months ago: I can’t see a reason for this Array.Reverse() error. In brief, trying to Reverse a color array in UnityScript returned an IENumerable and I needed to convert it to an array to use it as one…

var test2 = test.Reverse().ToArray();

This was working fine but after updating to the latest version of Unity and MonoDevelop, it’s now broken and I’m getting some weird errors…

First error: BCE0023: No appropriate version of ‘System.Array.Reverse’ for the argument list ‘()’ was found. — Solved by removing the brackets on the end of Reverse but…

var test2 = test.Reverse.ToArray();

Second error: BCE0019: ‘ToArray’ is not a member of ‘function(System.Array): void’. — Maybe it’s converted to an Array directly in the new MonoDevelop and I don’t need to convert? So I remove the ToArray() section…

var test2 = test.Reverse;

Third error: BCE0048: Type ‘function(System.Array): void’ does not support slicing. — So I can’t access it as an array…

It seems they’ve changed some underlying code structure in MonoDevelop. Any ideas on a fix?

Agree with Kiloblargh comment - Reverse (without parameters) is a LINQ extension method, and you problably don’t have

using System.Linq;

in your code.

I guess that without this ‘using’, Unity compiler thinks you want to use Reverse method of System.Array class. This is a static void method, accepting System.Array parameter, and hence the compiler errors you see.

Try add

using System.Linq;