Diferença entre ArrayList e Array em C# (com tabela)

Em C#, array e ArrayList são conhecidos por serem os tipos de dados mais usados. Um array é a funcionalidade básica da linguagem de programação C#, enquanto Arraylist no C# é uma coleção.

Ambos Array e ArrayList são usados para armazenar dados e não há restrição quanto a qualquer tipo de dado a ser armazenado.

ArrayList vs Array em C#

The difference between the Array and ArrayList is that array stores data of the same kind of data type whereas array lists can store data of different data types.

Para acessar os dados de ArrayList, é necessário fazer um loop usando o objeto, enquanto em um array você pode acessá-los facilmente sem nenhum objeto.


 

Tabela de comparação entre ArrayList e Array em C# (na forma tabular)

Parâmetro de ComparaçãoArrayListArray
TipoArrayList é do tipo não genéricoArray é fortemente tipado. Apenas valores do mesmo tipo de dados podem ser armazenados
Número de elementosÉ dinâmico, portanto, qualquer número de tipos de dados pode ser armazenadoApenas um número fixo de elementos pode ser adicionado
desempenhoIsso degrada o desempenho, pois o boxing e o unboxing são usadosPossui melhor desempenho.
Valor NULLPode aceitar valor NULLIt doesn’t
ClasseEle usa classe estáticaEle usa o namespace System.collection

 

O que é ArrayList em C#?

Listas de vetores são inicializadas usando a interface de lista. É considerado um dos dados mais flexíveis da linguagem C3. Uma coleção em linguagens de programação é uma classe especial que armazena os dados e permite que os programadores os recuperem.

  1. ArrayList não tem tamanho fixo, o tamanho da memória é dinâmico e você pode alterá-lo quando quiser. No caso, se um codificador iniciou a memória para 4 elementos, então pode-se adicionar mais um elemento.
  2. Na lista de matrizes, o tamanho é aumentado com o valor 2 ^ n. Além disso, ArrayList não é genérico, o que nos permite armazenar elementos de diferentes tipos de dados.
  3. Algumas das funções importantes para arraylist são RemoveAt (), Remove (), Insert () e Add ().
  4. Além disso, ele pode armazenar o elemento nulo.

Exemplo

                                    Usando System.collection;

                                    ArrayList a = new ArrayList ();

                                    a.add (1, “hi”);

                                    a.add (4);

                                    a.add (8,23);

                                    a.add (nulo);

Algumas das funções que são usadas para interagir com os dados armazenados na lista de arraylist.

  1. Add (): é usado para adicionar elementos na ArrayList.
  2. insert (): é usado para inserir elementos em um índice específico no ArrayList.
  3. Remove (): é usado para remover um único elemento,
  4. RemoveAt (): é usado para remover elementos específicos de ArrayList.
 

O que é matriz em C#?

Array é um tipo de dados em que um programador pode armazenar dados do mesmo tipo e comprimento fixo. O valor de comprimento e dados não podem ser alterados durante o tempo de execução. Todos os elementos do array recebem um valor de índice e o índice do array é zero.

Portanto, o valor padrão é zero do índice para o primeiro elemento da matriz. A sintaxe para declarar e definir a matriz em C# é a seguinte. Como o array é um tipo de dado de referência, sua memória é alocada na memória heap.

                                    Int [] array = new int [] {10,20,30,40};

                        10 20 30 40 dados

                        0 1 2 3 Índices

Alguns pontos importantes sobre matrizes.

  1. O array é de tamanho fixo e fortemente tipado. Isso significa que, por exemplo, se você fizer uma matriz de valores inteiros, poderá armazenar strings.
  2. Como não há unboxing ou boxing de dados, ele oferece melhor desempenho.

Principais diferenças entre ArrayList e Array em C#

  1. O tamanho da matriz é fixo e contém a coleção sequencial de todos os mesmos elementos de tipo. Considerando que o tamanho da lista de matriz não é fixo e aumenta com o 2 ^ n.
  2. A dimensão da matriz e o comprimento de cada dimensão são inicializados quando a matriz é criada. Durante o tempo de execução, não é possível alterar o valor do comprimento do array. Para ArrayList, o valor do comprimento da lista de arrays pode ser alterado dinamicamente.
  3. O índice do primeiro elemento na matriz 0 e o índice do último elemento é n-1, onde n é o comprimento do tamanho da matriz.
  4. ArrayList contains elements of different data types, whereas array contains data of similar data types. For example, if Array is of integer type, then only integers can be stored in the array.
  5. Array é um tipo de dados fortemente tipado e sua eficiência é melhor do que ArrayList. Como no Arraylist, o desembalagem e o boxe são necessários, portanto, é menos eficiente.
  6. O tamanho de ArrayList aumenta automaticamente, portanto, você precisa fornecer qualquer tamanho.

 

Conclusão

Array e Arraylist são os tipos de dados que permitem ao desenvolvedor armazenar vários elementos do mesmo tipo de dados em Array e diferentes tipos de dados na lista de arrays. Vários desenvolvedores usam Arraylist, já que Arraylist tem métodos diferentes que não existem em nenhum outro tipo de dados, como Repeat (), Reverse (), BinarySearch e muitos mais.

Array é considerado um tipo de dados de tamanho fixo e pode ser acessado facilmente, enquanto em ArrayList é necessário usar um objeto e usar o operador ponto para acessar os elementos armazenados no tipo de dados.

Bem, se um desenvolvedor precisa armazenar o mesmo tipo de elemento e precisa ter um tamanho fixo, então ele deve usar um array, caso contrário, deve-se usar um ArrayList.

Ambos fazem o mesmo trabalho de armazenamento dos elementos, mas a principal diferença é o tamanho fixo e o tamanho dinâmico. Portanto, se quiser armazenar diferentes tipos de dados, como null, char ou qualquer outro, você deve usar ArrayList, pois é um tipo de dados não genérico.

Ao passo que, se você deseja restringir um usuário a inserir diferentes tipos de dados em uma estrutura de dados, deve-se usar uma matriz, pois ela permite que apenas o mesmo tipo de dados seja inserido em uma matriz.


 

Referências

  1. Classe ArrayList (System.Collections) | Microsoft Docs
  2. https://www.itu.dk/research/c5/latest/ITU-TR-2006-76.pdf