2010-10-16 11 views
45

Si tengo una lista de cadenasComprobar si el elemento en la posición [x] existe en la lista

List<String> list = new list<String>(); 
list.add("str1"); 
list.add("str2"); 
list.add("str3"); 

y yo quiero saber si por ejemplo la posición de índice 2 contiene un elemento, hay una manera sencilla de haciendo esto sin contar la longitud de la lista o usando un try catch?

Como esto se producirá un error, puedo recibir todo el año con un intento de captura, pero esto parece excesivo

if(list.ElementAt(2) != null) 
{ 
    // logic 
} 
+3

Try list.Count> = 2 –

Respuesta

127
if(list.ElementAtOrDefault(2) != null) 
{ 
    // logic 
} 

ElementAtOrDefault() es parte del espacio de nombres System.Linq.

Aunque tiene una lista, entonces puede usar list.Count > 2.

+1

más rápido de leer que el cheque .Count regular, pero tenga en cuenta que los artículos "nulos" son teóricamente válida dentro de la lista, por lo que no se basan en esto arrojar una excepción si la prueba no se cumple. – AFract

5
if (list.Count > desiredIndex && list[desiredIndex] != null) 
{ 
    // logic 
} 
+3

incluso si list.Count> desiredIndex está satisfecho, al recuperar el elemento se arrojará una excepción si el índice <0 – AFract

+0

está bien, eso es poco. desiredIndex probablemente será un número positivo. Si esa afirmación no es confiable, simplemente agregue desiredIndex> -1 .. – SubjectX

0
int? here = (list.ElementAtOrDefault(2) != 0 ? list[2]:(int?) null); 
+0

Se desaconsejan las respuestas de solo código porque no explican cómo resuelven el problema. Por favor, actualice su respuesta para explicar cómo esto mejora en las otras respuestas aceptadas y votadas que esta pregunta ya tiene. Además, esta pregunta tiene 7 años, sus esfuerzos serán más apreciados por los usuarios que tienen preguntas recientes sin respuesta. Revise [Cómo escribo una buena respuesta] (https://stackoverflow.com/help/how-to-answer). – FluffyKitten

Cuestiones relacionadas