Gostaria de saber em que momentos é vantajoso usar um Array em vez de uma Lista ... pelo que vi os 2 tem uma "dinâmica" mais ou menos parecida, mas o List<> te oferece mais opções ... então porque usar um array?
Gostaria de saber em que momentos é vantajoso usar um Array em vez de uma Lista ... pelo que vi os 2 tem uma "dinâmica" mais ou menos parecida, mas o List<> te oferece mais opções ... então porque usar um array?
Fala Raul, tudo bom?
Tudo realmente depende do seu cenário, vou tentar explicar aqui para você as diferenças e acredito que a partir dai você será capaz de decidir quando usar cada um!
(existem diferenças técnicas, mas serei objetivo em situações que afetem diretamente o desenvolvedor)
Os arrays são coleções de dados de um mesmo tipo. Além disso os arrays são estáticos, ou seja, não é possível aumentar a quantidade de posições em tempo de execução. Quando declaramos um array, esse ocupará posições adjacentes na memória com o mesmo nome e tipo
Vemos aqui que uma das limitações é o tamanho estático.
Com essa limitação de tamanho dos arrays, existem situações que devemos permitir que o usuário possa inserir a quantidade de dados que ele quiser, sem termos que nos preocupar com o tamanho do Array. Os ArrayLists são coleções de dados que podem aumentar ou diminuir em tempo de execução, dinamicamente. Além disso, em um ArrayList, podemos inserir qualquer tipo de dado nesse mesmo ArrayList (decimal, string, inteiro)
A diferente entre Array e ArrayList é a capacidade de aumentar e diminuir seu tamanho e runtime
O List(T) também é uma coleção de dados, porém ele é uma "mistura" das duas anteriores.
É dinâmico como o ArrayList.
Permite apenas um tipo de dado como um Array.
Justamente esses dois pontos são as vantagens do List(T), mas a pergunta que normalmente surge nesse ponto é:
Como permitir apenas um tipo de dado pode ser uma vantagem?
Vamos lá, o fato de um ArrayList permitir a inserção de qualquer tipo de dado faz com que ele sofra de um problema (Boxing e Unboxing). Quando inserimos um item nesse ArrayList (boxing) ele é inserido como o tipo object automaticamente. Quando precisamos retirar esse elemento do ArrayList, ele precisará ser convertido novamente para seu tipo original antes de ir para o ArrayList (Unboxing). Essas conversões acontecem internamente no ArrayList e por isso esse perde um pouco no quesito desempenho em relação as outras coleções de dados que não sofrem desse problema por armazenar apenas 1 tipo de dado definido, dispensando essa análise
Agora que você sabe tudo isso, tenho certeza que será capaz de optar corretamente de acordo com a situação que você enfrentar. Lembre-se, a melhor escolha não é a que seja mais fácil de escrever, mas sim a que se encaixa melhor no contexto da situação apresentada.
Espero ter ajudado, amigo!
Um grande abraço e bons estudos!
Muito boa sua resposta , Paulo. Eu havia procurado no google, só que as respostas que achei eram breves e superficiais.
Obrigado