public void Assign(List <T> sourceList)
        {
            if (sourceList == null)
            {
                return;
            }
            var sourceData = PinnedListImpl.GetInternalArray(sourceList);
            var count      = sourceList.Count;

            ResizeDiscard(count);
            System.Array.Copy(sourceData, m_data, count);
        }
        public void LockList(Action <List <T> > body)
        {
            if (body == null)
            {
                return;
            }

            if (m_gch.IsAllocated)
            {
                m_gch.Free();
            }
            body(m_list);
            m_data = PinnedListImpl.GetInternalArray(m_list);
            m_gch  = GCHandle.Alloc(m_data, GCHandleType.Pinned);
        }
 public PinnedList(List <T> data, bool clone = false)
 {
     m_list = clone ? new List <T>(data) : data;
     m_data = PinnedListImpl.GetInternalArray(m_list);
     m_gch  = GCHandle.Alloc(m_data, GCHandleType.Pinned);
 }