그래서 나는 종종이 상황을 겪습니다 ... 여기서 Do.Something(...)null 컬렉션을 반환합니다 :
int[] returnArray = Do.Something(...);
그런 다음이 컬렉션을 다음과 같이 사용하려고합니다.
foreach (int i in returnArray)
{
// do some more stuff
}
궁금합니다 .foreach 루프가 null 컬렉션에서 작동하지 않는 이유는 무엇입니까? 0 개의 반복이 null 컬렉션으로 실행되는 것이 논리적 인 것 같습니다 ... 대신에 NullReferenceException. 왜 이것이 될 수 있는지 아는 사람이 있습니까?
반환하는 내용이 확실하지 않은 API로 작업하면서 짜증나는 일 이니 if (someCollection != null)어디에서나 끝납니다 ...
편집 :foreach 사용법 을 설명해 주셔서 감사합니다 .GetEnumerator 얻을 열거자가 없으면 foreach가 실패합니다. 열거 형을 잡기 전에 언어 / 런타임이 null 검사를 수행 할 수없는 이유를 묻고있는 것 같습니다. 그 행동은 여전히 잘 정의되어있는 것 같습니다.
null값이 주어지면 no-ops 가되도록 잘 정의되어 있다고 가정 합니다. foreach루프 또는 다른 문장에 대해서도 이것을 제안하고 있습니까?