2010-10-16 15 views
45

Jeśli mam listy ciągówSprawdź, czy elementem w pozycji [x] istnieje na liście

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

i chcę wiedzieć, czy na przykład pozycja indeksu 2 zawiera element, to istnieje prosty sposób robisz to bez zliczania długości listy lub używania próby catch?

Jak to zawiedzie, można uzyskać wokół niego z połowu spróbować, ale to wydaje się nadmierny

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

Spróbuj list.Count> = 2 –

Odpowiedz

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

ElementAtOrDefault() jest częścią przestrzeni nazw System.Linq.

Mimo że masz listę, możesz użyć numeru list.Count > 2.

+1

Szybciej do odczytania niż regularnego sprawdzania .Count, ale proszę pamiętać, niż „null” przedmioty są theorically ważny wewnątrz listy, więc nie należy polegać na tym, aby wyrzuć wyjątek, jeśli test nie jest spełniony. – AFract

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

nawet jeśli list.Count> desiredIndex jest spełniony, pobieranie elementu spowoduje zgłoszenie wyjątku, jeśli indeks <0 – AFract

+0

dobrze, to jest dziurkowanie. desiredIndex będzie prawdopodobnie liczbą dodatnią. Jeśli nie jest to wiarygodne twierdzenie, po prostu dodaj: requireIndex> -1 .. – SubjectX

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

Odpowiedzi dotyczące tylko kodu są zniechęcane, ponieważ nie wyjaśniają, w jaki sposób rozwiązują problem. Zaktualizuj swoją odpowiedź, aby wyjaśnić, jak to się poprawia w przypadku innych zaakceptowanych i wznowionych odpowiedzi, które już zostały zadane. Ponadto, to pytanie ma 7 lat, twoje wysiłki będą bardziej doceniane przez użytkowników, którzy mają ostatnie pytania bez odpowiedzi. Zapoznaj się z [Jak napisać dobrą odpowiedź] (https://stackoverflow.com/help/how-to-answer). – FluffyKitten

Powiązane problemy