Obtendo um Item da Lista por Índice


321

Recentemente, comecei a usar c # passando de Java. Não consigo encontrar como obter um item da lista por índice. Em java, para obter o primeiro item da lista, seria:

list1.get(0);

Qual é o equivalente em c #?


4
Consulte stackoverflow.com/questions/5326874/… para obter uma discussão sobre se deve usar o operador [] ou o método ElementAt ().
ngm 23/09/15

Respostas:


362
list1[0];

Supondo que o tipo de lista tenha um indexador definido.


5
A única resposta que explica por que é possível aceder a uma lista, que é um objeto, como um array
PrashanD

Ele retorna uma cópia do objeto na lista? obj = lista [0]; list.clear (); // o objeto ainda será preenchido?
Paul McCarthy

1
@ Paul McCarthy: você pode facilmente testar isso sozinho, mas sim. Uma lista contém referências a objetos. Limpar a lista não afeta os objetos nela contidos. Se não houver outras referências a esses objetos, eles serão coletados como lixo em algum momento.
Mitch Wheat

242

Você pode usar o método de extensão ElementAt na lista.

Por exemplo:

// Get the first item from the list

using System.Linq;

var myList = new List<string>{ "Yes", "No", "Maybe"};
var firstItem = myList.ElementAt(0);

// Do something with firstItem

24
Apenas observe que ElementAt () requer using System.Linq;.
ngm 23/09/15

16
Existe alguma vantagem nisso em relação à myList[0]notação padrão ?
AnalogWeapon 30/03

5
"Por que eu usaria Enumerable.ElementAt () versus o operador []?" stackoverflow.com/questions/5326874/…
Lavande

3
.ElementAtOrDefault();
Amit jha #:

@AnalogWeapon sim, existe - você pode usá-lo como parte de uma cadeia segura nula, por exemplo, myCollectionWhichMightBeNull?.ElementAt(0)ou para proteger contra um elemento inexistente:myCollection.ElementAtOrDefault(0)?.SomeProperty
Chris Peacock


18

Pergunta antiga, mas vejo que esse segmento estava ativo recentemente, então vou adiante e coloco meus dois centavos:

Praticamente exatamente o que Mitch disse. Supondo uma indexação adequada, você pode simplesmente seguir em frente e usar a notação de colchete como se estivesse acessando uma matriz. Além de usar o índice numérico, no entanto, se seus membros tiverem nomes específicos, muitas vezes você poderá fazer um tipo de pesquisa / acesso simultâneo digitando algo como:

var temp = list1["DesiredMember"];

Quanto mais você sabe, certo?


0

A Listestrutura de dados do .NET está Arrayem um "shell mutável".

Então você pode usar índices para acessar elementos como:

var firstElement = myList[0];
var secondElement = myList[1];

A partir do C # 8.0, você pode usar Indexe Rangeclasses para acessar elementos. Eles fornecem acesso a partir do final da sequência ou apenas acessam uma parte específica da sequência:

var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive

Você pode combinar índices e intervalos juntos:

var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together

Além disso, você pode usar o ElementAtmétodo LINQ , mas em 99% dos casos isso realmente não é necessário e apenas uma solução de desempenho lento.


0

você pode usar o índice para acessar os elementos da lista

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.