public void Assign(List <T> sourceList)
        {
            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 (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);
 }