Перевірте, чи є елемент у позиції [x] у списку


89

Якщо у мене є список рядків

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

і я хочу знати, чи, наприклад, позиція індексу 2 містить елемент, чи існує простий спосіб зробити це, не рахуючи довжини списку або не використовуючи try catch?

Оскільки це не вдасться, я можу обійти це, спробувавши зловити, але це здається надмірним

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

Відповіді:


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

ElementAtOrDefault () є частиною System.Linqпростору імен.

Хоча у вас є Список, тому ви можете ним користуватися list.Count > 2.


4
Швидше читання, ніж звичайна перевірка .Count, але зауважте, що "нульові" елементи теоретично діють всередині списку, тому не покладайтесь на це, щоб викинути виняток, якщо тест не задоволений.
AFract

1
Ви можете використовувати ?? оператор тобто. list.ElementAtOrDefault(2)??defaultvalue
Джордж Каргакіс

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

5
навіть якщо list.Count> бажанийІндекс задоволений, отримання елемента викличе виняток, якщо індекс <0
AFract

2
ну, це дурня. бажаний Індекс, ймовірно, буде додатним числом. Якщо це не є надійною претензією, просто додайте бажаний Індекс> -1 ..
SubjectX

@SubjectX - Не збиває. Поширеним є використання індексу, що повертається, за IndexOfяким може бути -1
Кайл Делані,

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

1
Відповіді лише на код не рекомендується, оскільки вони не пояснюють, як вони вирішують проблему. Будь ласка, оновіть свою відповідь, щоб пояснити, як це покращує інші прийняті та схвалені відповіді на це питання. Крім того, цьому питанню 7 років, ваші зусилля були б більш вдячні користувачам, які нещодавно мали відповіді на запитання. Будь ласка, перегляньте Як написати хорошу відповідь .
FluffyKitten
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.