Why do arrays in .net only implement IEnumerable and not IEnumerable<T>?
Solution 1:
Arrays do implement IEnumerable<T>
, but it is done as part of the special knowledge the CLI has for arrays. This works as if it were an explicit implementation (but isn't: it is done at runtime). Many tools will not show this implementation, this is described in the Remarks section of the Array
class overview.
You could add a cast:
return ((IEnumerable<T>)_array).GetEnumerator();
Note, older MSDN (pre docs.microsoft.com) coverage of this changed a few times with different .NET versions, check for the remarks section.