Example #1
0
        // 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);
            }
        }
Example #2
0
        void System.Collections.ICollection.CopyTo(Array array, int arrayIndex)
        {
            if ((array != null) && (array.Rank != 1))
            {
                ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported);
            }
#if DEBUG
            Contract.EndContractBlock();
#endif
            try
            {
                _items.CopyTo(array, arrayIndex, 0, _size);
            }
            catch (ArrayTypeMismatchException)
            {
                ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidArrayType);
            }
        }
 internal byte[] InternalGetBuffer()
 {
     byte[] bytes = new byte[_length];
     _buffer.CopyTo(bytes, 0, 0, _length);
     return(bytes);
 }