检查列表中[x]位置的元素是否存在


88

如果我有一个字符串列表

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

并且我想知道例如索引位置2是否包含一个元素,有没有一种简单的方法可以执行此操作而无需计算列表的长度或使用try catch?

由于这将失败,因此我可以尝试一下来解决问题,但这似乎过度

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

Answers:


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

ElementAtOrDefault()是System.Linq名称空间的一部分。

尽管您有一个列表,所以可以使用list.Count > 2


4
与常规的.Count检查相比,它的读取速度更快,但是请注意,“ null”项在列表内在理论上是有效的,因此,如果不满足测试条件,请不要依赖于此引发异常。
AFract

1
您可以使用?? 运算符list.ElementAtOrDefault(2)??defaultvalue
乔治·卡尔加基斯

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

5
即使满足list.Count> requiredIndex,如果index <0
AFract 16'Jan

2
好吧,多数民众赞成在挑剔。requiredIndex可能是正数。如果那不是可靠的声明,则只需添加期望索引> -1
。。– SubjectX

@SubjectX-不挑剔。通常使用的索引返回值IndexOf可以为-1
Kyle Delaney

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

1
不建议使用纯代码的答案,因为它们没有解释如何解决问题。请更新您的答案,以说明此问题已获得的其他接受和认可的答案如何改进。此外,这个问题已有7年历史,最近遇到未解决问题的用户将更加赞赏您的努力。请查看我如何写一个好的答案
FluffyKitten
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.