Quais as diferenças entre List e Arrays?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quais as diferenças entre List e Arrays?
Bom dia, Isabela. Tudo bom?
Um array é um tipo de estrutura de dados onde suas váriaveis (do mesmo tipo), podem ser acessados por um índice. No C# temos a classe Array, que me muito similar a classe ArrayList e List, porém ela tem algumas características:
Pode der uma ou mais dimensões
int[,] numeros = new int[5,2];Tem capacidade fixa
Acesso indexado ( pelos índices)
int[,] numeros = new int[5,2];
Console.WriteLine("Acessando indice: "+numeros[1,2]);Exemplos de criação de um array:
//Exemplo 1
Array meuArrayObjetos = Array.CreateInstance(typeof(Cliente), 5);
//Exemplo 2
Cliente[] array = new Cliente[5];A classe List (que trabalha com generics) e Arraylist são versões melhoradas de um Array, e possuem capacidade: Podem ser expandidas de tamanho
```
List<Cliente> lista = new List<Cliente>();
lista.Capacity = 5;
```Possuem métodos para adicionar, excluir entre outros.
```
Cliente cliente = new Cliente();
cliente.Nome = "André";
cliente.Idade = 35;
List<Cliente> lista = new List<Cliente>();
lista.Add(cliente);
```Possuem métodos de ordenação com um objeto.
Cliente cliente = new Cliente();
cliente.Nome = "André";
cliente.Idade = 41;
Cliente cliente2 = new Cliente();
cliente2.Nome = "Suzy";
cliente2.Idade = 40;
List<Cliente> lista = new List<Cliente>();
lista.Add(cliente);
lista.Add(cliente2);
lista.Sort();
foreach (var item in lista)
{
Console.WriteLine("Nome: "+item.Nome);
Console.WriteLine("Idade: " + item.Idade);
}
Para usar o método Sort, seu objeto precisa implementar a interface IComparable, na clsse cliente do exemplo implementei uma forma de ordenação pela idade.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
internal class Cliente : IComparable<Cliente>
{
string nome;
int idade;
public string Nome { get => nome; set => nome = value; }
public int Idade { get => idade; set => idade = value; }
** public int CompareTo(Cliente? other)
{
if (other == null)
return 1;
else
return this.idade.CompareTo(other.idade);
}**
}
}
Para tipos como string ou int não é necessário trabalhar a interface IComparable, exemplo:
List<int> listaDeNumeros = new List<int>();
listaDeNumeros.Add(58);
listaDeNumeros.Add(-500);
listaDeNumeros.Add(6932);
listaDeNumeros.Add(0);
listaDeNumeros.Add(27);
listaDeNumeros.Add(153);
listaDeNumeros.Sort();
for (int i = 0; i < listaDeNumeros.Count; i++)
{
Console.WriteLine(listaDeNumeros[i]);
}
Espero ter ajudado, dê uma olhada também na documentação oficial blz?
https://docs.microsoft.com/pt-br/dotnet/api/system.collections.generic.list-1?view=net-6.0 (LIST)
https://docs.microsoft.com/pt-br/dotnet/api/system.array?view=net-6.0 (ARRAY)