La réponse de Ayman est probablement le meilleur que vous pouvez faire pour C# 6, pour avant que ce que vous avez, il est à peu près le meilleur vous pouvez le faire si tous ces objets sont nullables. La seule façon d'optimiser cela est de vérifier si ces objets sont nuls avant même d'appeler le code, ou mieux encore d'éprouver votre plate-forme pour que cette fonction particulière ne soit même pas appelée en premier lieu si les valeurs sont nul.
Si vous obtenez simplement la valeur du dictionnaire mais vous pouvez aussi simplifier avec l'opérateur de coalescence nulle '??'
Exemple:
MyDictionary['Key'] ?? "Default Value";
Ainsi, si la valeur à cette entrée est nulle, vous obtiendrez la valeur par défaut à la place.
Donc, si cela est juste FETCH que je venais d'aller
var foo =
report != null &&
report.Breakdown != null &&
report.Breakdown.ContainsKey(reportName.ToString()) ?
report.Breakdown[reportName.ToString()].Result ?? "Default" :
"Default";
Mais si vous êtes en train de faire des choses dans la boucle, alors oui, vous êtes à peu près au mieux que vous pouvez y arriver.
Optimize comment? Performance? Plus court? Autre chose? – TheLethalCoder
Quelle version de C# utilisez-vous? L'opérateur conditionnel nul de C# 6 peut aider ici. –
Créez une opération IsNull() sur votre définition de type Report qui effectue toutes les vérifications nuls pour le rapport. Ensuite, vous pouvez simplement l'appeler. –