En supposant que le type d'éléments dans file.Headers soit T, vous pourriez faire ceci
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
ceci créera un énumérable vide de T si file.Headers est null. Si le type de fichier est un type que vous possédez, j'envisagerais cependant de modifier le getter de Headers
à la 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 devrait en fait (/originalement) être interprété comme "Je ne sais pas s'il y a des éléments", utilisez un ensemble vide pour montrer que vous savez qu'il n'y a pas d'éléments dans l'ensemble. Cela serait également DRY'er puisque vous n'aurez pas à faire la vérification de null aussi souvent.
EDITAR pour donner suite à la suggestion de Jons, vous pourriez également créer une méthode d'extension en modifiant 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 ma propre préférence car elle 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. Spécifiquement, celles qui sont liées à IList en utilisant la surcharge de méthode cela peut être éliminé
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}