// CopyTo copies a collection into an Array, starting at a particular // index into the array. // /// <include file='doc\Queue.uex' path='docs/doc[@for="Queue.CopyTo"]/*' /> public virtual void CopyTo(T[] array, int arrayIndex) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (arrayIndex < 0 || arrayIndex > array.Length) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.arrayIndex, ExceptionResource.ArgumentOutOfRange_Index); } int arrayLen = array.Length; if (arrayLen - arrayIndex < _size) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } int numToCopy = (arrayLen - arrayIndex < _size) ? (arrayLen - arrayIndex) : _size; if (numToCopy == 0) { return; } int firstPart = (_array.Length - _head < numToCopy) ? _array.Length - _head : numToCopy; _array.CopyTo(array, arrayIndex, _head, firstPart); numToCopy -= firstPart; if (numToCopy > 0) { _array.CopyTo(array, arrayIndex + _array.Length - _head, 0, numToCopy); } }
internal byte[] InternalGetBuffer() { byte[] bytes = new byte[_length]; _buffer.CopyTo(bytes, 0, 0, _length); return(bytes); }