ArrayList: Isso é certo ou tem forma melhor para fazer?

Sei um pouco de java, mas agora estou me aventurando no C#, mas veio uma duvida aqui:
No java instanciamos um ArrayList assim:
ArrayList<Tipo> nomeArray = new ArrayList<>();
Recuperamos um valor assim:
nomeArray.get(1).getNome();

E pelo meus teste aqui com C#, parece instancia assim:
ArrayList nomeArray = new ArrayList();//Não declara o tipo, estranho

E parece que se recupera assim:
((Tipo) nomeArray[1]).Nome;//Toda vez que tenho que recuperar tenho que usar um TypeCast?

Essa é a forma correta? Ou tem forma melhor?

No C#, um equivalente melhor para o ArrayList do Java é a classe List, que aceita generics. O ArrayList do C# é uma classe que opera sobre Object e não implementa generics, o que te obriga a a fazer o cast como você está fazendo.

Resumindo, use List:

List<Tipo> nomeArray = new List<Tipo>();

nomeArray[1].Nome;

Leia mais aqui: https://stackoverflow.com/questions/2309694/arraylist-vs-list-in-c-sharp .

Abraço.

2 curtidas