Junior
Qual é a diferença entre ArrayList e List em C#?
sobes.tech IA
Resposta da IA
As diferenças entre ArrayList e List em C# são as seguintes:
-
Tipagem:
ArrayListarmazena elementos do tipoobject(coleção não tipada), o que requer conversão de tipos ao extrair elementos e reduz a segurança de tipos.List<T>é uma coleção genérica (T— um tipo definido), que armazena elementos de um tipo específico, garantindo a segurança de tipos e eliminando a necessidade de conversão.
-
Desempenho:
- Adicionar e extrair elementos em
ArrayListpode ser mais lento devido à necessidade de boxing e unboxing de tipos valor. List<T>geralmente é mais rápido, especialmente para tipos valor, pois não há boxing/unboxing.
- Adicionar e extrair elementos em
-
Segurança de tipos:
ArrayListpode conter elementos de tipos diferentes, o que pode causar erros em tempo de execução.List<T>fornece segurança de tipos em tempo de compilação.
-
Implementação:
ArrayListencontra-se no espaço de nomesSystem.Collections.List<T>encontra-se no espaço de nomesSystem.Collections.Generic.
-
Uso:
ArrayListé considerado obsoleto e não é recomendado seu uso em código novo.List<T>é a opção preferida para a maioria dos cenários.
Exemplo de uso:
// Uso de ArrayList
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1); // int é embalado em object
arrayList.Add("string"); // string é armazenada como object
int numero = (int)arrayList[0]; // É necessária conversão de tipos
// Uso de List<T>
System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
list.Add(1); // Adiciona um int
// int numero = list[0]; // Nenhuma conversão de tipos necessária
Tabela de comparação:
| Característica | ArrayList | List<T> |
|---|---|---|
| Tipagem | Não tipada (object) | Genérica (T) |
| Desempenho | Pode envolver boxing/unboxing | Mais alto, sem boxing/unboxing para tipos valor |
| Segurança de tipos | Baixa | Alta (em tempo de compilação) |
| Espaço de nomes | System.Collections | System.Collections.Generic |
| Recomendado | Não recomendado | Recomendado |