Então, eu frequentemente corro nessa situação ... onde Do.Something(...)retorna uma coleção nula, assim:
int[] returnArray = Do.Something(...);
Em seguida, tento usar esta coleção da seguinte maneira:
foreach (int i in returnArray)
{
// do some more stuff
}
Estou curioso, por que um loop foreach não pode operar em uma coleção nula? Parece lógico para mim que 0 iterações seriam executadas com uma coleção nula ... em vez disso, lança a NullReferenceException. Alguém sabe por que isso pode ser?
Isso é chato, pois estou trabalhando com APIs que não são claras sobre o que exatamente retornam, então acabo em if (someCollection != null)todos os lugares ...
Edit: Obrigado a todos por explicar que foreachusa GetEnumeratore, se não houver um enumerador para obter, o foreach falhará. Acho que estou perguntando por que o idioma / tempo de execução não pode ou não fará uma verificação nula antes de pegar o enumerador. Parece-me que o comportamento ainda estaria bem definido.
nullvalor. Você está sugerindo isso apenas para foreachloops ou outras declarações?