Periksa apakah elemen di posisi [x] ada dalam daftar

91

Jika saya memiliki daftar string

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

dan saya ingin tahu jika misalnya posisi indeks 2 mengandung elemen, apakah ada cara sederhana untuk melakukan ini tanpa menghitung panjang daftar atau menggunakan try catch?

Karena ini akan gagal, saya dapat mengatasinya dengan mencoba menangkap, tetapi ini tampaknya berlebihan

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

Jawaban:

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

ElementAtOrDefault () adalah bagian dari System.Linqnamespace.

Meskipun Anda memiliki Daftar, jadi Anda dapat menggunakan list.Count > 2.

Yuriy Faktorovich
sumber
4
Lebih cepat dibaca daripada pemeriksaan .Count biasa, tetapi harap dicatat daripada "null" item secara teoritis valid di dalam daftar, jadi jangan mengandalkan ini untuk membuang pengecualian jika pengujian tidak memuaskan.
AFrak
1
Anda dapat menggunakan ?? operator yaitu. list.ElementAtOrDefault(2)??defaultvalue
George Kargakis
12
if (list.Count > desiredIndex && list[desiredIndex] != null)
{
    // logic
}
Anthony Pegram
sumber
5
bahkan jika list.Count> diinginkanIndex terpenuhi, mengambil elemen akan memunculkan pengecualian jika indeks <0
AFract
2
baik, itu rewel. Indeks yang diinginkan mungkin akan menjadi angka positif. Jika itu bukan klaim yang dapat diandalkan, tambahkan sajaIndeks yang diinginkan> -1 ..
SubjectX
1
@ SubjectX - Tidak rewel. Sangat umum untuk menggunakan indeks yang dikembalikan IndexOfdapat menjadi -1
Kyle Delaney
0
int? here = (list.ElementAtOrDefault(2) != 0 ? list[2]:(int?) null);
InGeek
sumber
2
Jawaban hanya kode tidak disarankan karena tidak menjelaskan cara menyelesaikan masalah. Harap perbarui jawaban Anda untuk menjelaskan bagaimana hal ini meningkat pada jawaban lain yang diterima dan disukai oleh pertanyaan ini. Selain itu, pertanyaan ini berusia 7 tahun, upaya Anda akan lebih dihargai oleh pengguna yang memiliki pertanyaan baru-baru ini yang belum terjawab. Harap tinjau Bagaimana cara menulis jawaban yang baik .
FluffyKitten