Obtener un elemento de lista por índice


321

Recientemente comencé a usar C # moviéndome desde Java. Parece que no puedo encontrar cómo obtener un elemento de lista por índice. En Java para obtener el primer elemento de la lista sería:

list1.get(0);

¿Cuál es el equivalente en c #?


44
Consulte stackoverflow.com/questions/5326874/… para obtener más información sobre si utilizar el operador [] o el método ElementAt ().
ngm

Respuestas:


362
list1[0];

Asumiendo que el tipo de la lista tiene un indexador definido.


55
La única respuesta que explica por qué es posible acceder a una lista, que es un objeto, como una matriz
PrashanD

¿Devuelve una copia del objeto en la lista? obj = lista [0]; list.clear (); // ¿obj todavía se completará?
Paul McCarthy

1
@ Paul McCarthy: fácilmente podrías probar esto tú mismo, pero sí. Una lista contiene referencias a objetos. Borrar la lista no afecta a los objetos que contiene. Si no hay otras referencias a esos objetos, se recolectarán basura en algún momento.
Mitch Wheat

242

Puede usar el método de extensión ElementAt en la lista.

Por ejemplo:

// 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
Solo para notar que ElementAt () requiere using System.Linq;.
ngm

16
¿Hay alguna ventaja en esto sobre la myList[0]notación estándar ?
AnalogWeapon

55
"¿Por qué usaría Enumerable.ElementAt () versus el operador []?" stackoverflow.com/questions/5326874/…
Lavande

3
.ElementAtOrDefault();
amit jha

@AnalogWeapon, sí, puede usarlo como parte de una cadena segura nula, por ejemplo, myCollectionWhichMightBeNull?.ElementAt(0)o para proteger contra un elemento inexistente:myCollection.ElementAtOrDefault(0)?.SomeProperty
Chris Peacock


18

Antigua pregunta, pero veo que este hilo estuvo bastante activo recientemente, así que seguiré y arrojaré mis dos centavos:

Más o menos exactamente lo que dijo Mitch. Suponiendo una indexación adecuada, puede seguir adelante y usar la notación de corchetes como si estuviera accediendo a una matriz. Sin embargo, además de usar el índice numérico, si sus miembros tienen nombres específicos, a menudo puede realizar una búsqueda / acceso simultáneo escribiendo algo como:

var temp = list1["DesiredMember"];

Cuanto más sabes, ¿verdad?


0

La Listestructura de datos .NET está Arrayen un "shell mutable".

Entonces puede usar índices para acceder a sus elementos como:

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

Comenzando con C # 8.0 , puede usar Indexy Rangeclases para acceder a elementos. Proporcionan acceso desde el final de la secuencia o simplemente acceden a una parte específica de la secuencia:

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

Puede combinar índices y rangos juntos:

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

También puede usar el ElementAtmétodo LINQ , pero en el 99% de los casos esto realmente no es necesario y solo es una solución de rendimiento lento.


0

puedes usar index para acceder a los elementos de la lista

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.