Coleções do Tipo ArrayList e List

Um objeto ArrayList ou List<T> é uma versão sofisticada de uma matriz.A classe ArrayList e a classe genérica List<T> fornece alguns recursos que são oferecidos na maioria das classes System.Collections, mas são não na classe Array.Por exemplo:

  • A capacidade de um Array é fixa, enquanto a capacidade de um ArrayList ou um List<T> será automaticamente expandida conforme necessário.Se o valor da propriedade Capacity for alterado, a realocação de memória e a cópia dos elementos são automaticamente realizadas.

  • ArrayList e List<T> fornecem métodos que adicionam, inserem ou removem um intervalo de elementos.Em Array, você pode obter ou definir o valor de apenas um elemento de cada vez.

  • Uma versão sincronizada dele ArrayList é fácil criar usando o Synchronized método. A classe Array deixa a cargo do usuário a implementação da sincronização.

  • ArrayList e List<T> fornecem métodos que retornam somente leitura e dimensionar fixo wrappers à coleção. Array não ocorre.

Por outro lado, o Array oferece alguma flexibilidade que ArrayList e List<T> não oferece.Por exemplo:

  • Você pode definir o limite inferior de um Array, mas a limite inferior de um ArrayList ou um List<T> é sempre zero.

  • Um Array pode ter várias dimensões, enquanto um ArrayList ou um List<T> sempre tem exatamente uma dimensão.

  • Um Array de um tipo específico (que não seja um Object) tem um desempenho melhor do que um ArrayList porque os elementos de ArrayList são do tipo Object e, portanto, conversões boxing e unboxing normalmente ocorrem ao se armazenar ou recuperar um tipo de valor.No entanto, um List<T> pode ter desempenho similar a uma matriz do mesmo tipo se nenhuma realocação for necessária; ou seja, se a capacidade inicial é uma boa aproximação do tamanho máximo da lista.

Na maioria dos casos em se que necessita de uma matriz pode-se usar um ArrayList ou um List<T>; elas são mais fáceis de usar e, em geral, têm desempenho similar a uma matriz de mesmo tipo.

Array está no namespace System; ArrayList está no namespace System.Collections; List<T> está no namespace System.Collections.Generic.

Consulte também

Referência

ArrayList

System.Collections

List<T>

System.Collections.Generic

Array

Outros recursos

Tipos de Coleção Comumente Usadas