Zakładając, że typ elementów w file.Headers to T, możesz to zrobić
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
spowoduje to utworzenie pustego wyliczalnego T, jeśli file.Headers ma wartość null. Jeśli typ pliku jest typem, którego jesteś właścicielem, rozważyłbym jednak zmianę metody pobierania Headers
. null
jest wartością nieznane, więc jeśli to możliwe, zamiast używać null jako „Wiem, że nie ma elementów”, gdy null faktycznie (/ pierwotnie) powinno być interpretowane jako „Nie wiem, czy są jakieś elementy” użyj pustego zestawu, aby pokazać że wiesz, że w zestawie nie ma żadnych elementów. Byłoby to również bardziej SUCHE, ponieważ nie będziesz musiał tak często sprawdzać zerowej wartości.
EDYTUJ jako kontynuację sugestii Jonsa, możesz również utworzyć metodę rozszerzenia zmieniającą powyższy kod na
foreach(var header in file.Headers.OrEmptyIfNull()){
}
W przypadku, gdy nie możesz zmienić metody pobierającej, byłby to mój własny preferowany sposób, ponieważ wyraźniej wyraża zamiar, nadając operacji nazwę (OrEmptyIfNull)
Wspomniana powyżej metoda rozszerzenia może uniemożliwić wykrywanie niektórych optymalizacji przez optymalizator. W szczególności można wyeliminować te, które są związane z IList przy użyciu przeciążania metod
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}