ToArrayをILSpyで見ると↓
// System.Collections.Generic.List<T>
/// <summary>
/// <see cref="T:System.Collections.Generic.List`1" /> の要素を新しい配列にコピーします。</summary>
/// <returns>
/// <see cref="T:System.Collections.Generic.List`1" /> の要素のコピーを格納する配列。</returns>
[__DynamicallyInvokable]
public T[] ToArray()
{
    T[] array = new T[this._size];
    Array.Copy(this._items, 0, array, 0, this._size);
    return array;
}