내 응용 프로그램에서 내 컨트롤에서 벗어난 데이터 소스에서 발생하는 데이터 컬렉션을 처리해야합니다. 이러한 콜렉션 중 일부는 널 (null) 검사 코드를 흩 뿌리기보다는 제 코드를 누르 자마자 걸러내는 것을 선호하는 널 (null)을 포함합니다. 나는 재사용 가능한 일반적인 방식으로이 일을 원하고 그것을이 방법을 쓴 :컬렉션에서 모든 null 제거
collection.RemoveAll(x => x == null);
:
나는 구체적인 목록 클래스에 알
public static void RemoveNulls<T>(this IList<T> collection) where T : class
{
for (var i = 0; i < collection.Count(); i++)
{
if (collection[i] == null)
collection.RemoveAt(i);
}
}
이처럼 사용할 수있는 RemoveAll()
방법이있다
하지만 많은 반환 유형은 구체적인 유형이 아닌 인터페이스 기반 (IList/IList ...)입니다.
왜 'RemoveAll'을 사용할 수 없는지 자세히 설명해 주시겠습니까? –
그리고 뭐가 문제입니까? –
항목을 제거하면 모든 후속 요소의 색인이 1 씩 아래쪽으로 이동하기 때문에 작성한 코드는 작동하지 않습니다. 널을 제거 할 때마다 코드는 다음 요소 검사를 건너 뜁니다. –