[x] 위치의 요소가 목록에 있는지 확인


88

문자열 목록이있는 경우

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

예를 들어 색인 위치 2에 요소가 포함되어 있는지 알고 싶습니다. 목록의 길이를 세거나 try catch를 사용하지 않고 간단한 방법이 있습니까?

이것이 실패 할 것이기 때문에 try catch로 돌릴 수 있지만 이것은 과도한 것 같습니다.

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

답변:


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

ElementAtOrDefault ()는 System.Linq네임 스페이스의 일부입니다 .

목록이 있지만 list.Count > 2.


4
일반 .Count 검사보다 읽기가 더 빠르지 만 "null"항목은 목록 내에서 이론적으로 유효하므로 테스트가 충족되지 않으면 예외를 throw하는 데 의존하지 마십시오.
AFract

1
??를 사용할 수 있습니다 . 운영자 즉. list.ElementAtOrDefault(2)??defaultvalue
George Kargakis

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

5
list.Count> desiredIndex가 충족 되더라도 index <0 인 경우 요소를 검색하면 예외가 발생합니다
AFract

2
글쎄, 그것은 nitpicking입니다. desiredIndex는 아마도 양수일 것입니다. 신뢰할 수있는 주장이 아닌 경우 desiredIndex> -1을 추가하십시오 ..
SubjectX

@SubjectX-nitpicking이 아닙니다. IndexOf-1이 될 수 있는 인덱스를 사용하는 것이 일반적입니다
Kyle Delaney

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

1
코드 전용 답변은 문제 해결 방법을 설명하지 않으므로 권장하지 않습니다. 이 질문이 이미 승인 및 찬성 한 다른 답변에서 개선되는 점을 설명하기 위해 답변을 업데이트하십시오. 또한이 질문은 7 년이 지났으므로 최근에 답변하지 않은 질문이있는 사용자에게 더 감사하겠습니다. 좋은 답변을 작성하는 방법을 검토하십시오 .
FluffyKitten
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.