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:
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 =newList<string>{"Yes","No","Maybe"};var firstItem = myList.ElementAt(0);// Do something with firstItem
@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
27
Visual Basic, C # e C ++ têm sintaxe para acessar a propriedade Item sem usar seu nome. Em vez disso, a variável que contém a lista é usada como se fosse uma matriz.
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:
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 Indexvar 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.
Respostas:
Supondo que o tipo de lista tenha um indexador definido.
fonte
Você pode usar o método de extensão ElementAt na lista.
Por exemplo:
fonte
using System.Linq;
.myList[0]
notação padrão ?.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
ou para proteger contra um elemento inexistente:myCollection.ElementAtOrDefault(0)?.SomeProperty
Visual Basic, C # e C ++ têm sintaxe para acessar a propriedade Item sem usar seu nome. Em vez disso, a variável que contém a lista é usada como se fosse uma matriz.
Veja, por exemplo: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
fonte
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:
Quanto mais você sabe, certo?
fonte
A
List
estrutura de dados do .NET estáArray
em um "shell mutável".Então você pode usar índices para acessar elementos como:
A partir do C # 8.0, você pode usar
Index
eRange
classes para acessar elementos. Eles fornecem acesso a partir do final da sequência ou apenas acessam uma parte específica da sequência:Você pode combinar índices e intervalos juntos:
Além disso, você pode usar o
ElementAt
método LINQ , mas em 99% dos casos isso realmente não é necessário e apenas uma solução de desempenho lento.fonte
você pode usar o índice para acessar os elementos da lista
fonte