2016-03-15 3 views
4

Quel est le meilleur moyen de vérifier si une instance System.Linq.Expressions.Expression est vide? Par exemple, quelque chose comme ceci:Comment vérifier si une expression est vide (vide)?

Expression expression = Expression.Empty(); 
... 
if (expression.IsEmpty) { ... 

seulement IsEmpty n'existe pas.

Une idée est de tester les résultats de ToString:

if (expression.ToString() == "default(Void)") { ... 

mais cela ne semble pas juste.

Répondre

3

Selon la documentation Empty() retours

Un DefaultExpression qui a la propriété NodeType égal à défaut et la propriété type définie à Void.

donc vous devriez être en mesure d'utiliser:

if(expression.NodeType == ExpressionType.Default && expression.Type == typeof(void)) 
+0

Mais cela ne veut pas dire qu'il ne peut jamais être une expression qui est un type de vide et une valeur par défaut qui représente autre chose qu'un expression vide. – Servy

+0

Ce serait exactement ma prochaine question. Je vois la partie par défaut, mais ne teste pas 'expression.Type == typeof (System.Void)' assez? Quelque chose ne peut pas être plus vide que la vacuité elle-même ... est-ce possible? – Dejan

+0

@Dejan Ce n'est pas vrai. Il y a toutes sortes d'expressions qui n'ont aucun type. Cela signifie simplement qu'ils ne produisent pas de valeur (et sont donc utilisés pour leurs effets secondaires). – Servy