When the “best member of a function” part of the specification is called (section 7.5.3.2), the list of parameters in question is in extended form (since the first method is applicable only in extended form). At this point, you are comparing two type calls:
public static string Foo<T>(T[] items) Foo(new[] { items });
and
public static string Foo<T>(IEnumerable<T> items) Foo(items);
Converting from List<int>[] to List<int>[] is a "better conversion" than converting from List<T> to IEnumerable<T> , so we don’t get to tie-breaks that would otherwise prefer normal forms over the extended form.
source share