Angenommen, der Elementtyp in file.Headers ist T, könnten Sie dies tun
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
Dadurch wird eine leere Aufzählung von T erstellt, wenn file.Headers null ist. Wenn der Dateityp ein Typ ist, den Sie besitzen, würde ich jedoch in Betracht ziehen, Headers
stattdessen den Getter von zu ändern .null
ist der Wert von unknown. Wenn möglich, anstatt null als "Ich weiß, dass es keine Elemente gibt" zu verwenden, wenn null tatsächlich (/ ursprünglich) als "Ich weiß nicht, ob es Elemente gibt" interpretiert werden sollte, verwenden Sie eine leere Menge, um anzuzeigen dass Sie wissen, dass das Set keine Elemente enthält. Das wäre auch DRY'er, da Sie die Nullprüfung nicht so oft durchführen müssen.
BEARBEITEN Als Folge von Jons Vorschlag können Sie auch eine Erweiterungsmethode erstellen, die den obigen Code in ändert
foreach(var header in file.Headers.OrEmptyIfNull()){
//do stuff
}
In dem Fall, in dem Sie den Getter nicht ändern können, wäre dies meine eigene Präferenz, da es die Absicht klarer ausdrückt, indem Sie der Operation einen Namen geben (OrEmptyIfNull).
Die oben erwähnte Erweiterungsmethode kann es dem Optimierer unmöglich machen, bestimmte Optimierungen zu erkennen. Insbesondere diejenigen, die mit IList in Verbindung stehen, indem diese Methode überladen wird, können eliminiert werden
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}