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
}
JGilmartin
la source

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.

Yuriy Faktorovich
la source
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
}
Anthony Pegram
la source
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);
InGeek
la source
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