Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferença entre List<T> e Arrays?

Quais as diferenças entre List e Arrays?

1 resposta
solução!

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 Insira aqui a descrição dessa imagem para ajudar na acessibilidade

  • 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)