位置[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
}

回答:


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

ElementAtOrDefault()はSystem.Linq名前空間の一部です。

あなたはリストを持っていますが、あなたは使うことができますlist.Count > 2


4
通常の.Countチェックよりも読み取りが高速ですが、「null」項目は理論的にはリスト内で有効であるため、テストが満たされない場合に例外をスローするためにこれに依存しないでください。
AFract 2016年

1
あなたは??を使うことができます 演算子すなわち。list.ElementAtOrDefault(2)??defaultvalue
GeorgeKargakis18年

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

5
list.Count> desiredIndexが満たされている場合でも、index <0の場合、要素を取得すると例外がスローされます
AFract

2
まあ、それはつまらない。DesiredIndexはおそらく正の数になります。それが信頼性が主張されていない場合、単にdesiredIndexを追加> -1 ..
SubjectX

@ SubjectX-つまらないものではありません。返されるインデックスを使用するのが一般的です。インデックスはIndexOf-1になります
Kyle Delaney

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

1
コードのみの回答は、問題の解決方法を説明していないため、お勧めできません。回答を更新して、この質問がすでに持っている他の受け入れられ、賛成された回答をどのように改善するかを説明してください。また、この質問は7年前のものです。最近未回答の質問があるユーザーには、あなたの努力がより高く評価されます。良い答えを書くにはどうすればよいかを確認してください。
FluffyKitten 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.