Vérifier si l'élément à la position [x] existe dans la liste


88

Si j'ai une liste de chaînes

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

et je veux savoir si, par exemple, la position d'index 2 contient un élément, y a-t-il un moyen simple de le faire sans compter la longueur de la liste ou en utilisant un try catch?

Comme cela échouera, je peux le contourner avec un essai, mais cela semble excessif

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

Réponses:


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

ElementAtOrDefault () fait partie de l' System.Linqespace de noms.

Bien que vous ayez une liste, vous pouvez donc utiliser list.Count > 2.


4
Plus rapide à lire que la vérification régulière de .Count, mais veuillez noter que les éléments «nuls» sont théoriquement valides à l'intérieur de la liste, alors ne comptez pas sur cela pour lancer une exception si le test n'est pas satisfait.
AFract

1
Vous pouvez utiliser le ?? opérateur ie. list.ElementAtOrDefault(2)??defaultvalue
George Kargakis

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

5
même si list.Count> desireIndex est satisfait, la récupération de l'élément lèvera une exception si index <0
AFract

2
bien, c'est pinailler. désiréIndex sera probablement un nombre positif. Si ce n'est pas fiable réclamation, il suffit d' ajouter desiredIndex> -1 ..
SubjectX

@SubjectX - Pas de pinaillerie. Il est courant d'utiliser un index retourné par IndexOflequel peut être -1
Kyle Delaney

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

1
Les réponses basées uniquement sur le code sont déconseillées car elles n'expliquent pas comment elles résolvent le problème. Veuillez mettre à jour votre réponse pour expliquer comment cela améliore les autres réponses acceptées et votées pour cette question. En outre, cette question a 7 ans, vos efforts seraient plus appréciés par les utilisateurs qui ont récemment posé des questions sans réponse. Veuillez consulter Comment écrire une bonne réponse .
FluffyKitten
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.