public override void CopyTo(int index, Array array, int arrayIndex, int count)
{
if (array == null)
throw new ArgumentNullException(nameof(array));
if (index < 0 || arrayIndex < 0)
throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(arrayIndex), SR.ArgumentOutOfRange_NeedNonNegNum);
if (count < 0)
throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum);
if (array.Length - arrayIndex < count)
throw new ArgumentException(SR.Argument_InvalidOffLen);
if (array.Rank != 1)
throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array));
Contract.EndContractBlock();
if (_list.Count - index < count)
throw new ArgumentException(SR.Argument_InvalidOffLen);
for (int i = index; i < index + count; i++)
array.SetValue(_list[i], arrayIndex++);
}