En supposant que le type d'éléments dans file.Headers est T, vous pouvez le faire
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
cela créera un énumérable vide de T si file.Headers est nul. Si le type de fichier est un type que vous possédez, j'envisagerais cependant de changer le getter à la Headers
place. null
est la valeur de unknown donc si possible au lieu d'utiliser null comme "Je sais qu'il n'y a pas d'éléments" alors que null en fait (/ à l'origine) devrait être interprété comme "Je ne sais pas s'il y a des éléments", utilisez un ensemble vide pour afficher que vous savez qu'il n'y a aucun élément dans l'ensemble. Ce serait également DRY'er puisque vous n'aurez pas à faire la vérification de null aussi souvent.
EDIT comme suite à la suggestion de Jons, vous pouvez également créer une méthode d'extension en changeant le code ci-dessus en
foreach(var header in file.Headers.OrEmptyIfNull()){
//do stuff
}
Dans le cas où vous ne pouvez pas changer le getter, ce serait mon préféré car il exprime l'intention plus clairement en donnant un nom à l'opération (OrEmptyIfNull)
La méthode d'extension mentionnée ci-dessus peut rendre certaines optimisations impossibles à détecter par l'optimiseur. Plus précisément, ceux qui sont liés à IList en utilisant une surcharge de méthode peuvent être éliminés
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}