A previous question은 IEnumerable과 null 값의 빈 컬렉션 대신 빈 컬렉션을 사용하는 규칙에 대해 설명합니다. 많은 실수가 자주 발생하는 null 검사를 수행하지 않는 것이 좋습니다.null 배열과 IEnumerable <T>
하지만 답변을 통해 문제가 해결되지는 않습니다. 여러 번 나는 입니다.은 특히 배열이 외부 메소드에서 반환 될 때 null 값을 처리해야합니다. 예 :
(foreignObj.GetPeople() ?? Enumerable.Empty<Person>())
.Where(p => p.Name != "John")
.OrderBy(p => p.Name)
.Take(4);
나는 약간의 가독성을 향상시키는 도우미 방법을 작성했습니다. 결과
public class SafeEnumerable
{
public static IEnumerable<T> From<T>(T[] arr)
{
return arr ?? Enumerable.Empty<T>();
}
}
:
SafeEnumerable.From(foreignObj.GetPeople())
.Where(p => p.Name != "John")
.OrderBy(p => p.Name)
.Take(4);
나는이 상관 없어,하지만 난 더 나은 아이디어를 찾고 있어요. 이미 있어야 할 무언가를 추가하고있는 것처럼 보입니다.
()'당신도 필요가 없습니다 : 그것은 더 관용적, LINQy 방식으로 사용할 수 있도록
당신은 아마 그것을 확장 방법을 만들 수 널 체크 또는'?? '연산자. 이 메소드는 파일이 발견되지 않으면 null을 리턴하지 않는다는 것을 알고, 빈'FileInfo []'배열을 리턴합니다. 그래서 당신의 연결된 질문에 대한 대답도 받아 들일 수 있습니다. – BoltClock
나는'EmptyIfNull'확장 메소드 인'foo.EmptyIfNull() ....'만 사용 했으니 까. –
Jon
수정 해 주셔서 고마워. 대신 가상의 예제를 포함하도록 수정했다. –