调整列表<t>的大小

时间:2016-03-31 04:12:15

标签: c# arrays list resize

我想调整List<T>的大小。即。根据某些条件更改列表的计数。现在,Iam正在使用像这样的数组: -

private MyModel[] viewPages = GetPagesFromAPI().ToArray();

if (viewPages.Count % 6 == 0) 
{
   Array.Resize(ref newViewPages, viewPages.Length / 6);
} 
else
{
   Array.Resize(ref newViewPages, viewPages.Length / 6 + 1);
}

但是,我认为这不是一种正确的方法,因为这会对我的应用程序造成严重影响并可能导致内存问题。有没有办法可以使用像List<MyModel> viewPageList这样的东西?

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

  

我想调整List<T>

的大小

你误解了List<T>的目的。根据定义,列表是自动重新调整大小的集合,不需要手动调整大小。在添加元素时,它会检查它的内部阵列后备存储,并在需要时增加它的大小(当前的实现细节将使它的后备存储加倍)。

这就是List<T>.Add的实施方式:

// Adds the given object to the end of this list. The size of the list is
// increased by one. If required, the capacity of the list is doubled
// before adding the new element.
public void Add(T item)
{
     if (_size == _items.Length) EnsureCapacity(_size + 1);
     _items[_size++] = item;
    _version++;
}

EnsureCapacity将确保后备阵列有足够的存储空间。